From f8bbbdef16ee2ec9f50d33b406696d777dcf7057 Mon Sep 17 00:00:00 2001 From: Justin Cormack Date: Sun, 4 Mar 2012 13:59:00 +0000 Subject: [PATCH] add chroma and hue set and get to cielab --- d3.v2.js | 31 +++++++++++++++++++++++++++++++ d3.v2.min.js | 8 ++++---- src/core/cielab.js | 31 +++++++++++++++++++++++++++++++ test/core/cielab-test.js | 12 ++++++++++++ 4 files changed, 78 insertions(+), 4 deletions(-) diff --git a/d3.v2.js b/d3.v2.js index a2b5bcff3ca3a..bb1c9264affac 100644 --- a/d3.v2.js +++ b/d3.v2.js @@ -1565,6 +1565,30 @@ d3_Cielab.prototype.darker = function(k) { return d3_cielab(Math.max(0, this.l - 18 * (arguments.length ? k : 1)), this.a, this.b); }; +d3_Cielab.prototype.hue = function(h) { + var a = this.a; + var b = this.b; + + if (arguments.length) { + return d3_cielab_lch(this.l, this.chroma(), h) + } + + var h = Math.atan2(b, a); + + return h > 0 ? (h / Math.PI) * 180 : 360 - (Math.abs(h) / Math.PI) * 180; +} + +d3_Cielab.prototype.chroma = function(c) { + var a = this.a; + var b = this.b; + + if (arguments.length) { + return d3_cielab_lch(this.l, c, this.hue()) + } + + return Math.sqrt(a * a + b * b); +} + d3_Cielab.prototype.toString = function() { return this.rgb().toString(); }; @@ -1605,6 +1629,13 @@ function d3_cielab_cielch(l, a, b) { return d3_cielch(l, c, h); } +function d3_cielab_lch(l, c, h) { + var hr = h * (Math.PI / 180); + var a = Math.cos(hr) * c; + var b = Math.sin(hr) * c; + return d3_cielab(l, a, b); +} + d3.cielch = function(l, c, h) { return arguments.length === 1 ? (l instanceof d3_Cielch ? d3_cielch(l.l, l.c, l.h) diff --git a/d3.v2.min.js b/d3.v2.min.js index 40a92551ce855..1f8cf5980106d 100644 --- a/d3.v2.min.js +++ b/d3.v2.min.js @@ -1,4 +1,4 @@ -(function(){function f(a,b){try{for(var c in b)Object.defineProperty(a.prototype,c,{value:b[c],enumerable:!1})}catch(d){a.prototype=b}}function h(a){var b=-1,c=a.length,d=[];while(++b=0?a.substring(b):(b=a.length,""),d=[];while(b>0)d.push(a.substring(b-=3,b+3));return d.reverse().join(",")+c}function G(a,b){return{scale:Math.pow(10,(8-b)*3),symbol:a}}function M(a){return function(b){return b<=0?0:b>=1?1:a(b)}}function N(a){return function(b){return 1-a(1-b)}}function O(a){return function(b){return.5*(b<.5?a(2*b):2-a(2-2*b))}}function P(a){return a}function Q(a){return function(b){return Math.pow(b,a)}}function R(a){return 1-Math.cos(a*Math.PI/2)}function S(a){return Math.pow(2,10*(a-1))}function T(a){return 1-Math.sqrt(1-a*a)}function U(a,b){var c;return arguments.length<2&&(b=.45),arguments.length<1?(a=1,c=b/4):c=b/(2*Math.PI)*Math.asin(1/a),function(d){return 1+a*Math.pow(2,10*-d)*Math.sin((d-c)*2*Math.PI/b)}}function V(a){return a||(a=1.70158),function(b){return b*b*((a+1)*b-a)}}function W(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}function X(){d3.event.stopPropagation(),d3.event.preventDefault()}function Y(){var a=d3.event,b;while(b=a.sourceEvent)a=b;return a}function Z(a){var b=new y,c=0,d=arguments.length;while(++c.04045?Math.pow((a+.055)/1.055,2.4):a/12.92}function h(a){return a>.008856?Math.pow(a,1/3):7.787*a+16/116}a/=255,b/=255,c/=255,a=d(a)*100,b=d(b)*100,c=d(c)*100;var e=a*.4124+b*.3576+c*.1805,f=a*.2126+b*.7152+c*.0722,g=a*.0193+b*.1192+c*.9505;e/=95.047,f/=100,g/=108.883,e=h(e),f=h(f),g=h(g);var i=f>.008856?116*f-16:903.3*f,j=500*(e-f),c=200*(f-g);return bn(i,j,c)}function bi(a){var b=parseFloat(a);return a.charAt(a.length-1)==="%"?Math.round(b*2.55):b}function bk(a,b,c){return new bl(a,b,c)}function bl(a,b,c){this.h=a,this.s=b,this.l=c}function bm(a,b,c){function f(a){return a>360?a-=360:a<0&&(a+=360),a<60?d+(e-d)*a/60:a<180?e:a<240?d+(e-d)*(240-a)/60:d}function g(a){return Math.round(f(a)*255)}var d,e;return a%=360,a<0&&(a+=360),b=b<0?0:b>1?1:b,c=c<0?0:c>1?1:c,e=c<=.5?c*(1+b):c+b-c*b,d=2*c-e,bc(g(a+120),g(a),g(a-120))}function bn(a,b,c){return new bo(a,b,c)}function bo(a,b,c){this.l=a,this.a=b,this.b=c}function bp(a,b,c){function g(a){var b=a*a*a;return b>.008856?b:(a-16/116)/7.787}function j(a){return a=a>.0031308?1.055*Math.pow(a,1/2.4)-.055:12.92*a,Math.round(a*255)}var d=(a+16)/116,e=b/500+d,f=d-c/200,e=g(e)*.95047,d=g(d),f=g(f)*1.08883,h=e*3.2406+d*-1.5372+f*-0.4986,i=e*-0.9689+d*1.8758+f*.0415,c=e*.0557+d*-0.204+f*1.057;return bc(j(h),j(i),j(c))}function bq(a,b,d){var e=Math.atan2(d,b);return e=e>0?e/Math.PI*180:360-Math.abs(e)/Math.PI*180,c=Math.sqrt(b*b+d*d),br(a,c,e)}function br(a,b,c){return new bs(a,b,c)}function bs(a,b,c){this.l=a,this.c=b,this.h=c}function bt(a,b,c){var d=c*(Math.PI/180),e=Math.cos(d)*b,f=Math.sin(d)*b;return bn(a,e,f)}function bu(a){return k(a,bA),a}function bB(a){return function(){return bv(a,this)}}function bC(a){return function(){return bw(a,this)}}function bE(a,b){function f(){if(b=this.classList)return b.add(a);var b=this.className,d=b.baseVal!=null,e=d?b.baseVal:b;c.lastIndex=0,c.test(e)||(e=u(e+" "+a),d?b.baseVal=e:this.className=e)}function g(){if(b=this.classList)return b.remove(a);var b=this.className,d=b.baseVal!=null,e=d?b.baseVal:b;e=u(e.replace(c," ")),d?b.baseVal=e:this.className=e}function h(){(b.apply(this,arguments)?f:g).call(this)}var c=new RegExp("(^|\\s+)"+d3.requote(a)+"(\\s+|$)","g");if(arguments.length<2){var d=this.node();if(e=d.classList)return e.contains(a);var e=d.className;return c.lastIndex=0,c.test(e.baseVal!=null?e.baseVal:e)}return this.each(typeof b=="function"?h:b?f:g)}function bF(a){return{__data__:a}}function bG(a){return function(){return bz(this,a)}}function bH(a){return arguments.length||(a=d3.ascending),function(b,c){return a(b&&b.__data__,c&&c.__data__)}}function bJ(a){return k(a,bK),a}function bL(a,b,c){k(a,bP);var d=new l,e=d3.dispatch("start","end"),f=bS;return a.id=b,a.time=c,a.tween=function(b,c){return arguments.length<2?d.get(b):(c==null?d.remove(b):d.set(b,c),a)},a.ease=function(b){return arguments.length?(f=typeof b=="function"?b:d3.ease.apply(d3,arguments),a):f},a.each=function(b,c){return arguments.length<2?bT.call(a,b):(e.on(b,c),a)},d3.timer(function(g){return a.each(function(h,i,j){function p(a){return o.active>b?r():(o.active=b,d.forEach(function(a,b){(tween=b.call(l,h,i))&&k.push(tween)}),e.start.call(l,h,i),q(a)||d3.timer(q,0,c),1)}function q(a){if(o.active!==b)return r();var c=(a-m)/n,d=f(c),g=k.length;while(g>0)k[--g].call(l,d);if(c>=1)return r(),bR=b,e.end.call(l,h,i),bR=0,1}function r(){return--o.count||delete l.__transition__,1}var k=[],l=this,m=a[j][i].delay,n=a[j][i].duration,o=l.__transition__||(l.__transition__={active:0,count:0});++o.count,m<=g?p(g):d3.timer(p,m,c)}),1},0,c),a}function bN(a,b,c){return c!=""&&bM}function bO(a,b){function d(a,d,e){var f=b.call(this,a,d);return f==null?e!=""&&bM:e!=f&&c(e,f)}function e(a,d,e){return e!=b&&c(e,b)}var c=_(a);return typeof b=="function"?d:b==null?bN:(b+="",e)}function bT(a){for(var b=0,c=this.length;b=c.delay&&(c.flush=c.callback(a)),c=c.next;var d=bY()-b;d>24?(isFinite(d)&&(clearTimeout(bW),bW=setTimeout(bX,d)),bV=0):(bV=1,bZ(bX))}function bY(){var a=null,b=bU,c=Infinity;while(b)b.flush?b=a?a.next=b.next:bU=b.next:(c=Math.min(c,b.then+b.delay),b=(a=b).next);return c}function b$(a){var b=[a.a,a.b],c=[a.c,a.d],d=ca(b),e=b_(b,c),f=ca(cb(c,b,-e))||0;b[0]*c[1]2?cr:cq,i=d?bb:ba;return e=g(a,b,i,c),f=g(b,a,i,d3.interpolate),h}function h(a){return e(a)}var e,f;return h.invert=function(a){return f(a)},h.domain=function(b){return arguments.length?(a=b.map(Number),g()):a},h.range=function(a){return arguments.length?(b=a,g()):b},h.rangeRound=function(a){return h.range(a).interpolate(d3.interpolateRound)},h.clamp=function(a){return arguments.length?(d=a,g()):d},h.interpolate=function(a){return arguments.length?(c=a,g()):c},h.ticks=function(b){return co(a,b)},h.tickFormat=function(b){return cp(a,b)},h.nice=function(){return ci(a,cm),g()},h.copy=function(){return ck(a,b,c,d)},g()}function cl(a,b){return d3.rebind(a,b,"range","rangeRound","interpolate","clamp")}function cm(a){return a=Math.pow(10,Math.round(Math.log(a)/Math.LN10)-1),{floor:function(b){return Math.floor(b/a)*a},ceil:function(b){return Math.ceil(b/a)*a}}}function cn(a,b){var c=cg(a),d=c[1]-c[0],e=Math.pow(10,Math.floor(Math.log(d/b)/Math.LN10)),f=b/d*e;return f<=.15?e*=10:f<=.35?e*=5:f<=.75&&(e*=2),c[0]=Math.ceil(c[0]/e)*e,c[1]=Math.floor(c[1]/e)*e+e*.5,c[2]=e,c}function co(a,b){return d3.range.apply(d3,cn(a,b))}function cp(a,b){return d3.format(",."+Math.max(0,-Math.floor(Math.log(cn(a,b)[2])/Math.LN10+.01))+"f")}function cq(a,b,c,d){var e=c(a[0],a[1]),f=d(b[0],b[1]);return function(a){return f(e(a))}}function cr(a,b,c,d){var e=[],f=[],g=0,h=Math.min(a.length,b.length)-1;a[h]0;j--)e.push(c(f)*j)}else{for(;fi;g--);e=e.slice(f,g)}return e},d.tickFormat=function(a,e){arguments.length<2&&(e=ct);if(arguments.length<1)return e;var f=a/d.ticks().length,g=b===cv?(h=-1e-12,Math.floor):(h=1e-12,Math.ceil),h;return function(a){return a/c(g(b(a)+h))0?0:-a)/Math.LN10}function cw(a,b){function e(b){return a(c(b))}var c=cx(b),d=cx(1/b);return e.invert=function(b){return d(a.invert(b))},e.domain=function(b){return arguments.length?(a.domain(b.map(c)),e):a.domain().map(d)},e.ticks=function(a){return co(e.domain(),a)},e.tickFormat=function(a){return cp(e.domain(),a)},e.nice=function(){return e.domain(ci(e.domain(),cm))},e.exponent=function(a){if(!arguments.length)return b;var f=e.domain();return c=cx(b=a),d=cx(1/b),e.domain(f)},e.copy=function(){return cw(a.copy(),b)},cl(e,a)}function cx(a){return function(b){return b<0?-Math.pow(-b,a):Math.pow(b,a)}}function cy(a,b){function f(b){return d[((c.get(b)||c.set(b,a.push(b)))-1)%d.length]}function g(b,c){return d3.range(a.length).map(function(a){return b+c*a})}var c,d,e;return f.domain=function(d){if(!arguments.length)return a;a=[],c=new l;var e=-1,g=d.length,h;while(++e1){h=b[1],f=a[i],i++,d+="C"+(e[0]+g[0])+","+(e[1]+g[1])+","+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1];for(var j=2;j9&&(f=c*3/Math.sqrt(f),g[h]=f*d,g[h+1]=f*e));h=-1;while(++h<=i)f=(a[Math.min(i,h+1)][0]-a[Math.max(0,h-1)][0])/(6*(1+g[h]*g[h])),b.push([f||0,g[h]*f||0]);return b}function dk(a){return a.length<3?cS(a):a[0]+cY(a,dj(a))}function dl(a){var b,c=-1,d=a.length,e,f;while(++c1){var d=cg(a.domain()),e,f=-1,g=b.length,h=(b[1]-b[0])/++c,i,j;while(++f0;)(j=+b[f]-i*h)>=d[0]&&e.push(j);for(--f,i=0;++id&&(c=b,d=e);return c}function ee(a){return a.reduce(ef,0)}function ef(a,b){return a+b[1]}function eg(a,b){return eh(a,Math.ceil(Math.log(b.length)/Math.LN2+1))}function eh(a,b){var c=-1,d=+a[0],e=(a[1]-d)/b,f=[];while(++c<=b)f[c]=e*c+d;return f}function ei(a){return[d3.min(a),d3.max(a)]}function ej(a,b){return d3.rebind(a,b,"sort","children","value"),a.links=en,a.nodes=function(b){return eo=!0,(a.nodes=a)(b)},a}function ek(a){return a.children}function el(a){return a.value}function em(a,b){return b.value-a.value}function en(a){return d3.merge(a.map(function(a){return(a.children||[]).map(function(b){return{source:a,target:b}})}))}function ep(a,b){return a.value-b.value}function eq(a,b){var c=a._pack_next;a._pack_next=b,b._pack_prev=a,b._pack_next=c,c._pack_prev=b}function er(a,b){a._pack_next=b,b._pack_prev=a}function es(a,b){var c=b.x-a.x,d=b.y-a.y,e=a.r+b.r;return e*e-c*c-d*d>.001}function et(a){function l(a){b=Math.min(a.x-a.r,b),c=Math.max(a.x+a.r,c),d=Math.min(a.y-a.r,d),e=Math.max(a.y+a.r,e)}var b=Infinity,c=-Infinity,d=Infinity,e=-Infinity,f=a.length,g,h,i,j,k;a.forEach(eu),g=a[0],g.x=-g.r,g.y=0,l(g);if(f>1){h=a[1],h.x=h.r,h.y=0,l(h);if(f>2){i=a[2],ey(g,h,i),l(i),eq(g,i),g._pack_prev=i,eq(i,h),h=g._pack_next;for(var m=3;m0&&(a=d)}return a}function eH(a,b){return a.x-b.x}function eI(a,b){return b.x-a.x}function eJ(a,b){return a.depth-b.depth}function eK(a,b){function c(a,d){var e=a.children;if(e&&(i=e.length)){var f,g=null,h=-1,i;while(++h=0)f=d[e]._tree,f.prelim+=b,f.mod+=b,b+=f.shift+(c+=f.change)}function eM(a,b,c){a=a._tree,b=b._tree;var d=c/(b.number-a.number);a.change+=d,b.change-=d,b.shift+=c,b.prelim+=c,b.mod+=c}function eN(a,b,c){return a._tree.ancestor.parent==b.parent?a._tree.ancestor:c}function eO(a){return{x:a.x,y:a.y,dx:a.dx,dy:a.dy}}function eP(a,b){var c=a.x+b[3],d=a.y+b[0],e=a.dx-b[1]-b[3],f=a.dy-b[0]-b[2];return e<0&&(c+=e/2,e=0),f<0&&(d+=f/2,f=0),{x:c,y:d,dx:e,dy:f}}function eQ(a){return a.map(eR).join(",")}function eR(a){return/[",\n]/.test(a)?'"'+a.replace(/\"/g,'""')+'"':a}function eT(a,b){return function(c){return c&&a.hasOwnProperty(c.type)?a[c.type](c):b}}function eU(a){return"m0,"+a+"a"+a+","+a+" 0 1,1 0,"+ -2*a+"a"+a+","+a+" 0 1,1 0,"+2*a+"z"}function eV(a,b){eW.hasOwnProperty(a.type)&&eW[a.type](a,b)}function eX(a,b){eV(a.geometry,b)}function eY(a,b){for(var c=a.features,d=0,e=c.length;d0}function fk(a,b,c){return(c[0]-b[0])*(a[1]-b[1])<(c[1]-b[1])*(a[0]-b[0])}function fl(a,b,c,d){var e=a[0],f=b[0],g=c[0],h=d[0],i=a[1],j=b[1],k=c[1],l=d[1],m=e-g,n=f-e,o=h-g,p=i-k,q=j-i,r=l-k,s=(o*p-r*m)/(r*n-o*q);return[e+s*n,i+s*q]}function fn(a,b){var c={list:a.map(function(a,b){return{index:b,x:a[0],y:a[1]}}).sort(function(a,b){return a.yb.y?1:a.xb.x?1:0}),bottomSite:null},d={list:[],leftEnd:null,rightEnd:null,init:function(){d.leftEnd=d.createHalfEdge(null,"l"),d.rightEnd=d.createHalfEdge(null,"l"),d.leftEnd.r=d.rightEnd,d.rightEnd.l=d.leftEnd,d.list.unshift(d.leftEnd,d.rightEnd)},createHalfEdge:function(a,b){return{edge:a,side:b,vertex:null,l:null,r:null}},insert:function(a,b){b.l=a,b.r=a.r,a.r.l=b,a.r=b},leftBound:function(a){var b=d.leftEnd;do b=b.r;while(b!=d.rightEnd&&e.rightOf(b,a));return b=b.l,b},del:function(a){a.l.r=a.r,a.r.l=a.l,a.edge=null},right:function(a){return a.r},left:function(a){return a.l},leftRegion:function(a){return a.edge==null?c.bottomSite:a.edge.region[a.side]},rightRegion:function(a){return a.edge==null?c.bottomSite:a.edge.region[fm[a.side]]}},e={bisect:function(a,b){var c={region:{l:a,r:b},ep:{l:null,r:null}},d=b.x-a.x,e=b.y-a.y,f=d>0?d:-d,g=e>0?e:-e;return c.c=a.x*d+a.y*e+(d*d+e*e)*.5,f>g?(c.a=1,c.b=e/d,c.c/=d):(c.b=1,c.a=d/e,c.c/=e),c},intersect:function(a,b){var c=a.edge,d=b.edge;if(!c||!d||c.region.r==d.region.r)return null;var e=c.a*d.b-c.b*d.a;if(Math.abs(e)<1e-10)return null;var f=(c.c*d.b-d.c*c.b)/e,g=(d.c*c.a-c.c*d.a)/e,h=c.region.r,i=d.region.r,j,k;h.y=k.region.r.x;return l&&j.side==="l"||!l&&j.side==="r"?null:{x:f,y:g}},rightOf:function(a,b){var c=a.edge,d=c.region.r,e=b.x>d.x;if(e&&a.side==="l")return 1;if(!e&&a.side==="r")return 0;if(c.a===1){var f=b.y-d.y,g=b.x-d.x,h=0,i=0;!e&&c.b<0||e&&c.b>=0?i=h=f>=c.b*g:(i=b.x+b.y*c.b>c.c,c.b<0&&(i=!i),i||(h=1));if(!h){var j=d.x-c.region.l.x;i=c.b*(g*g-f*f)m*m+n*n}return a.side==="l"?i:!i},endPoint:function(a,c,d){a.ep[c]=d;if(!a.ep[fm[c]])return;b(a)},distance:function(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)}},f={list:[],insert:function(a,b,c){a.vertex=b,a.ystar=b.y+c;for(var d=0,e=f.list,g=e.length;dh.ystar||a.ystar==h.ystar&&b.x>h.vertex.x)continue;break}e.splice(d,0,a)},del:function(a){for(var b=0,c=f.list,d=c.length;bo.y&&(p=n,n=o,o=p,t="r"),s=e.bisect(n,o),m=d.createHalfEdge(s,t),d.insert(k,m),e.endPoint(s,fm[t],r),q=e.intersect(k,m),q&&(f.del(k),f.insert(k,q,e.distance(q,n))),q=e.intersect(m,l),q&&f.insert(m,q,e.distance(q,n));else break}for(i=d.right(d.leftEnd);i!=d.rightEnd;i=d.right(i))b(i.edge)}function fo(){return{leaf:!0,nodes:[],point:null}}function fp(a,b,c,d,e,f){if(!a(b,c,d,e,f)){var g=(c+e)*.5,h=(d+f)*.5,i=b.nodes;i[0]&&fp(a,i[0],c,d,g,h),i[1]&&fp(a,i[1],g,d,e,h),i[2]&&fp(a,i[2],c,h,g,f),i[3]&&fp(a,i[3],g,h,e,f)}}function fq(a){return{x:a[0],y:a[1]}}function fs(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function ft(a,b,c,d){var e,f,g=0,h=b.length,i=c.length;while(g=i)return-1;e=b.charCodeAt(g++);if(e==37){f=fz[b.charAt(g++)];if(!f||(d=f(a,c,d))<0)return-1}else if(e!=c.charCodeAt(d++))return-1}return d}function fA(a,b,c){return fC.test(b.substring(c,c+=3))?c:-1}function fB(a,b,c){fD.lastIndex=0;var d=fD.exec(b.substring(c,c+10));return d?c+=d[0].length:-1}function fE(a,b,c){var d=fF.get(b.substring(c,c+=3).toLowerCase());return d==null?-1:(a.setMonth(d),c)}function fG(a,b,c){fH.lastIndex=0;var d=fH.exec(b.substring(c,c+12));return d?(a.setMonth(fI.get(d[0].toLowerCase())),c+=d[0].length):-1}function fK(a,b,c){return ft(a,fy.c.toString(),b,c)}function fL(a,b,c){return ft(a,fy.x.toString(),b,c)}function fM(a,b,c){return ft(a,fy.X.toString(),b,c)}function fN(a,b,c){fX.lastIndex=0;var d=fX.exec(b.substring(c,c+4));return d?(a.setFullYear(d[0]),c+=d[0].length):-1}function fO(a,b,c){fX.lastIndex=0;var d=fX.exec(b.substring(c,c+2));return d?(a.setFullYear(fP()+ +d[0]),c+=d[0].length):-1}function fP(){return~~((new Date).getFullYear()/1e3)*1e3}function fQ(a,b,c){fX.lastIndex=0;var d=fX.exec(b.substring(c,c+2));return d?(a.setMonth(d[0]-1),c+=d[0].length):-1}function fR(a,b,c){fX.lastIndex=0;var d=fX.exec(b.substring(c,c+2));return d?(a.setDate(+d[0]),c+=d[0].length):-1}function fS(a,b,c){fX.lastIndex=0;var d=fX.exec(b.substring(c,c+2));return d?(a.setHours(+d[0]),c+=d[0].length):-1}function fT(a,b,c){return a.hour12=!0,fS(a,b,c)}function fU(a,b,c){fX.lastIndex=0;var d=fX.exec(b.substring(c,c+2));return d?(a.setMinutes(+d[0]),c+=d[0].length):-1}function fV(a,b,c){fX.lastIndex=0;var d=fX.exec(b.substring(c,c+2));return d?(a.setSeconds(+d[0]),c+=d[0].length):-1}function fW(a,b,c){fX.lastIndex=0;var d=fX.exec(b.substring(c,c+3));return d?(a.setMilliseconds(+d[0]),c+=d[0].length) -:-1}function fY(a,b,c){var d=fZ.get(b.substring(c,c+=2).toLowerCase());return d==null?-1:(a.hour12pm=d,c)}function f$(a){var b=a.getTimezoneOffset(),c=b>0?"-":"+",d=~~(Math.abs(b)/60),e=Math.abs(b)%60;return c+fu(d)+fu(e)}function ga(a){return a.toISOString()}function gb(a,b,c){function d(b){var c=a(b),d=f(c,1);return b-c1)while(gb?1:a>=b?0:NaN},d3.descending=function(a,b){return ba?1:b>=a?0:NaN},d3.mean=function(a,b){var c=a.length,d,e=0,f=-1,g=0;if(arguments.length===1)while(++f1&&(a=a.map(b)),a=a.filter(q),a.length?d3.quantile(a.sort(d3.ascending),.5):undefined},d3.min=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++cf&&(e=f)}else{while(++cf&&(e=f)}return e},d3.max=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++ce&&(e=f)}else{while(++ce&&(e=f)}return e},d3.extent=function(a,b){var c=-1,d=a.length,e,f,g;if(arguments.length===1){while(++cf&&(e=f),gf&&(e=f),g1);return a+b*c*Math.sqrt(-2*Math.log(e)/e)}}},d3.sum=function(a,b){var c=0,d=a.length,e,f=-1;if(arguments.length===1)while(++f>1;a.call(b,b[f],f)>1;c0&&(e=f);return e},d3.last=function(a,b){var c=0,d=a.length,e=a[0],f;arguments.length===1&&(b=d3.ascending);while(++c=b.length)return e?e.call(a,c):d?c.sort(d):c;var h=-1,i=c.length,j=b[g++],k,m,n=new l,o,p={};while(++h=b.length)return a;var e=[],f=c[d++],h;for(h in a)e.push({key:h,values:g(a[h],d)});return f&&e.sort(function(a,b){return f(a.key,b.key)}),e}var a={},b=[],c=[],d,e;return a.map=function(a){return f(a,0)},a.entries=function(a){return g(f(a,0),0)},a.key=function(c){return b.push(c),a},a.sortKeys=function(d){return c[b.length-1]=d,a},a.sortValues=function(b){return d=b,a},a.rollup=function(b){return e=b,a},a},d3.keys=function(a){var b=[];for(var c in a)b.push(c);return b},d3.values=function(a){var b=[];for(var c in a)b.push(a[c]);return b},d3.entries=function(a){var b=[];for(var c in a)b.push({key:c,value:a[c]});return b},d3.permute=function(a,b){var c=[],d=-1,e=b.length;while(++db)d.push(g/e);else while((g=a+c*++f)=0&&(c=a.substring(0,b),a=a.substring(b+1)),x.hasOwnProperty(c)?{space:x[c],local:a}:a}},d3.dispatch=function(){var a=new y,b=-1,c=arguments.length;while(++b0&&(d=a.substring(c+1),a=a.substring(0,c)),arguments.length<2?this[a].on(d):this[a].on(d,b)},d3.format=function(a){var b=A.exec(a),c=b[1]||" ",d=b[3]||"",e=b[5],f=+b[6],g=b[7],h=b[8],i=b[9],j=1,k="",l=!1;h&&(h=+h.substring(1)),e&&(c="0",g&&(f-=Math.floor((f-1)/4)));switch(i){case"n":g=!0,i="g";break;case"%":j=100,k="%",i="f";break;case"p":j=100,k="%",i="r";break;case"d":l=!0,h=0;break;case"s":j=-1,i="r"}return i=="r"&&!h&&(i="g"),i=B.get(i)||D,function(a){if(l&&a%1)return"";var b=a<0&&(a=-a)?"−":d;if(j<0){var m=d3.formatPrefix(a,h);a*=m.scale,k=m.symbol}else a*=j;a=i(a,h);if(e){var n=a.length+b.length;n=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,B=d3.map({g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},r:function(a,b){return d3.round(a,b=C(a,b)).toFixed(Math.max(0,Math.min(20,b)))}}),F=["y","z","a","f","p","n","μ","m","","k","M","G","T","P","E","Z","Y"].map(G);d3.formatPrefix=function(a,b){var c=0;return a&&(a<0&&(a*=-1),b&&(a=d3.round(a,C(a,b))),c=1+Math.floor(1e-12+Math.log(a)/Math.LN10),c=Math.max(-24,Math.min(24,Math.floor((c<=0?c+1:c-1)/3)*3))),F[8+c/3]};var H=Q(2),I=Q(3),J=function(){return P},K=d3.map({linear:J,poly:Q,quad:function(){return H},cubic:function(){return I},sin:function(){return R},exp:function(){return S},circle:function(){return T},elastic:U,back:V,bounce:function(){return W}}),L=d3.map({"in":P,out:N,"in-out":O,"out-in":function(a){return O(N(a))}});d3.ease=function(a){var b=a.indexOf("-"),c=b>=0?a.substring(0,b):a,d=b>=0?a.substring(b+1):"in";return c=K.get(c)||J,d=L.get(d)||P,M(d(c.apply(null,Array.prototype.slice.call(arguments,1))))},d3.event=null,d3.interpolate=function(a,b){var c=d3.interpolators.length,d;while(--c>=0&&!(d=d3.interpolators[c](a,b)));return d},d3.interpolateNumber=function(a,b){return b-=a,function(c){return a+b*c}},d3.interpolateRound=function(a,b){return b-=a,function(c){return Math.round(a+b*c)}},d3.interpolateString=function(a,b){var c,d,e,f=0,g=0,h=[],i=[],j,k;$.lastIndex=0;for(d=0;c=$.exec(b);++d)c.index&&h.push(b.substring(f,g=c.index)),i.push({i:h.length,x:c[0]}),h.push(null),f=$.lastIndex;f1){while(++e=0;)if(f=c[d])e&&e!==f.nextSibling&&e.parentNode.insertBefore(f,e),e=f;return this},bA.sort=function(a){a=bH.apply(this,arguments);for(var b=-1,c=this.length;++b0&&(a=a.substring(0,e)),arguments.length<2?(e=this.node()[d])&&e._:this.each(function(e,f){function i(a){var c=d3.event;d3.event=a;try{b.call(g,g.__data__,f)}finally{d3.event=c}}var g=this,h=g[d];h&&(g.removeEventListener(a,h,h.$),delete g[d]),b&&(g.addEventListener(a,g[d]=i,i.$=c),i._=b)})},bA.each=function(a){for(var b=-1,c=this.length;++b=cH?e?"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"M0,"+e+"A"+e+","+e+" 0 1,0 0,"+ -e+"A"+e+","+e+" 0 1,0 0,"+e+"Z":"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"Z":e?"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L"+e*m+","+e*n+"A"+e+","+e+" 0 "+j+",0 "+e*k+","+e*l+"Z":"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L0,0"+"Z"}var a=cI,b=cJ,c=cK,d=cL;return e.innerRadius=function(b){return arguments.length?(a=d3.functor(b),e):a},e.outerRadius=function(a){return arguments.length?(b=d3.functor(a),e):b},e.startAngle=function(a){return arguments.length?(c=d3.functor(a),e):c},e.endAngle=function(a){return arguments.length?(d=d3.functor(a),e):d},e.centroid=function(){var e=(a.apply(this,arguments)+b.apply(this,arguments))/2,f=(c.apply(this,arguments)+d.apply(this,arguments))/2+cG;return[Math.cos(f)*e,Math.sin(f)*e]},e};var cG=-Math.PI/2,cH=2*Math.PI-1e-6;d3.svg.line=function(){return cM(Object)};var cQ="linear",cR=d3.map({linear:cS,"step-before":cT,"step-after":cU,basis:c$,"basis-open":c_,"basis-closed":da,bundle:db,cardinal:cX,"cardinal-open":cV,"cardinal-closed":cW,monotone:dk}),dd=[0,2/3,1/3,0],de=[0,1/3,2/3,0],df=[0,1/6,2/3,1/6];d3.svg. -line.radial=function(){var a=cM(dl);return a.radius=a.x,delete a.x,a.angle=a.y,delete a.y,a},cT.reverse=cU,cU.reverse=cT,d3.svg.area=function(){return dm(Object)},d3.svg.area.radial=function(){var a=dm(dl);return a.radius=a.x,delete a.x,a.innerRadius=a.x0,delete a.x0,a.outerRadius=a.x1,delete a.x1,a.angle=a.y,delete a.y,a.startAngle=a.y0,delete a.y0,a.endAngle=a.y1,delete a.y1,a},d3.svg.chord=function(){function f(c,d){var e=g(this,a,c,d),f=g(this,b,c,d);return"M"+e.p0+i(e.r,e.p1,e.a1-e.a0)+(h(e,f)?j(e.r,e.p1,e.r,e.p0):j(e.r,e.p1,f.r,f.p0)+i(f.r,f.p1,f.a1-f.a0)+j(f.r,f.p1,e.r,e.p0))+"Z"}function g(a,b,f,g){var h=b.call(a,f,g),i=c.call(a,h,g),j=d.call(a,h,g)+cG,k=e.call(a,h,g)+cG;return{r:i,a0:j,a1:k,p0:[i*Math.cos(j),i*Math.sin(j)],p1:[i*Math.cos(k),i*Math.sin(k)]}}function h(a,b){return a.a0==b.a0&&a.a1==b.a1}function i(a,b,c){return"A"+a+","+a+" 0 "+ +(c>Math.PI)+",1 "+b}function j(a,b,c,d){return"Q 0,0 "+d}var a=dq,b=dr,c=ds,d=cK,e=cL;return f.radius=function(a){return arguments.length?(c=d3.functor(a),f):c},f.source=function(b){return arguments.length?(a=d3.functor(b),f):a},f.target=function(a){return arguments.length?(b=d3.functor(a),f):b},f.startAngle=function(a){return arguments.length?(d=d3.functor(a),f):d},f.endAngle=function(a){return arguments.length?(e=d3.functor(a),f):e},f},d3.svg.diagonal=function(){function d(d,e){var f=a.call(this,d,e),g=b.call(this,d,e),h=(f.y+g.y)/2,i=[f,{x:f.x,y:h},{x:g.x,y:h},g];return i=i.map(c),"M"+i[0]+"C"+i[1]+" "+i[2]+" "+i[3]}var a=dq,b=dr,c=dv;return d.source=function(b){return arguments.length?(a=d3.functor(b),d):a},d.target=function(a){return arguments.length?(b=d3.functor(a),d):b},d.projection=function(a){return arguments.length?(c=a,d):c},d},d3.svg.diagonal.radial=function(){var a=d3.svg.diagonal(),b=dv,c=a.projection;return a.projection=function(a){return arguments.length?c(dw(b=a)):b},a},d3.svg.mouse=d3.mouse,d3.svg.touches=d3.touches,d3.svg.symbol=function(){function c(c,d){return(dA.get(a.call(this,c,d))||dz)(b.call(this,c,d))}var a=dy,b=dx;return c.type=function(b){return arguments.length?(a=d3.functor(b),c):a},c.size=function(a){return arguments.length?(b=d3.functor(a),c):b},c};var dA=d3.map({circle:dz,cross:function(a){var b=Math.sqrt(a/5)/2;return"M"+ -3*b+","+ -b+"H"+ -b+"V"+ -3*b+"H"+b+"V"+ -b+"H"+3*b+"V"+b+"H"+b+"V"+3*b+"H"+ -b+"V"+b+"H"+ -3*b+"Z"},diamond:function(a){var b=Math.sqrt(a/(2*dC)),c=b*dC;return"M0,"+ -b+"L"+c+",0"+" 0,"+b+" "+ -c+",0"+"Z"},square:function(a){var b=Math.sqrt(a)/2;return"M"+ -b+","+ -b+"L"+b+","+ -b+" "+b+","+b+" "+ -b+","+b+"Z"},"triangle-down":function(a){var b=Math.sqrt(a/dB),c=b*dB/2;return"M0,"+c+"L"+b+","+ -c+" "+ -b+","+ -c+"Z"},"triangle-up":function(a){var b=Math.sqrt(a/dB),c=b*dB/2;return"M0,"+ -c+"L"+b+","+c+" "+ -b+","+c+"Z"}});d3.svg.symbolTypes=dA.keys();var dB=Math.sqrt(3),dC=Math.tan(30*Math.PI/180);d3.svg.axis=function(){function k(k){k.each(function(l,m,n){var o=d3.select(this),p=k.delay?function(a){var b=bR;try{return bR=k.id,a.transition().delay(k[n][m].delay).duration(k[n][m].duration).ease(k.ease())}finally{bR=b}}:Object,q=h==null?a.ticks?a.ticks.apply(a,g):a.domain():h,r=i==null?a.tickFormat?a.tickFormat.apply(a,g):String:i,s=dF(a,q,j),t=o.selectAll(".minor").data(s,String),u=t.enter().insert("line","g").attr("class","tick minor").style("opacity",1e-6),v=p(t.exit()).style("opacity",1e-6).remove(),w=p(t).style("opacity",1),x=o.selectAll("g").data(q,String),y=x.enter().insert("g","path").style("opacity",1e-6),z=p(x.exit()).style("opacity",1e-6).remove(),A=p(x).style("opacity",1),B,C=ch(a),D=o.selectAll(".domain").data([0]),E=D.enter().append("path").attr("class","domain"),F=p(D),G=a.copy(),H=this.__chart__||G;this.__chart__=G,y.append("line").attr("class","tick"),y.append("text"),A.select("text").text(r);switch(b){case"bottom":B=dD,u.attr("y2",d),w.attr("x2",0).attr("y2",d),y.select("line").attr("y2",c),y.select("text").attr("y",Math.max(c,0)+f),A.select("line").attr("x2",0).attr("y2",c),A.select("text").attr("x",0).attr("y",Math.max(c,0)+f).attr("dy",".71em").attr("text-anchor","middle"),F.attr("d","M"+C[0]+","+e+"V0H"+C[1]+"V"+e);break;case"top":B=dD,u.attr("y2",-d),w.attr("x2",0).attr("y2",-d),y.select("line").attr("y2",-c),y.select("text").attr("y",-(Math.max(c,0)+f)),A.select("line").attr("x2",0).attr("y2",-c),A.select("text").attr("x",0).attr("y",-(Math.max(c,0)+f)).attr("dy","0em").attr("text-anchor","middle"),F.attr("d","M"+C[0]+","+ -e+"V0H"+C[1]+"V"+ -e);break;case"left":B=dE,u.attr("x2",-d),w.attr("x2",-d).attr("y2",0),y.select("line").attr("x2",-c),y.select("text").attr("x",-(Math.max(c,0)+f)),A.select("line").attr("x2",-c).attr("y2",0),A.select("text").attr("x",-(Math.max(c,0)+f)).attr("y",0).attr("dy",".32em").attr("text-anchor","end"),F.attr("d","M"+ -e+","+C[0]+"H0V"+C[1]+"H"+ -e);break;case"right":B=dE,u.attr("x2",d),w.attr("x2",d).attr("y2",0),y.select("line").attr("x2",c),y.select("text").attr("x",Math.max(c,0)+f),A.select("line").attr("x2",c).attr("y2",0),A.select("text").attr("x",Math.max(c,0)+f).attr("y",0).attr("dy",".32em").attr("text-anchor","start"),F.attr("d","M"+e+","+C[0]+"H0V"+C[1]+"H"+e)}if(a.ticks)y.call(B,H),A.call(B,G),z.call(B,G),u.call(B,H),w.call(B,G),v.call(B,G);else{var I=G.rangeBand()/2,J=function(a){return G(a)+I};y.call(B,J),A.call(B,J)}})}var a=d3.scale.linear(),b="bottom",c=6,d=6,e=6,f=3,g=[10],h=null,i,j=0;return k.scale=function(b){return arguments.length?(a=b,k):a},k.orient=function(a){return arguments.length?(b=a,k):b},k.ticks=function(){return arguments.length?(g=arguments,k):g},k.tickValues=function(a){return arguments.length?(h=a,k):h},k.tickFormat=function(a){return arguments.length?(i=a,k):i},k.tickSize=function(a,b,f){if(!arguments.length)return c;var g=arguments.length-1;return c=+a,d=g>1?+b:c,e=g>0?+arguments[g]:c,k},k.tickPadding=function(a){return arguments.length?(f=+a,k):f},k.tickSubdivide=function(a){return arguments.length?(j=+a,k):j},k},d3.svg.brush=function(){function f(a){a.each(function(){var a=d3.select(this),e=a.selectAll(".background").data([0]),k=a.selectAll(".extent").data([0]),l=a.selectAll(".resize").data(d,String),m;a.style("pointer-events","all").on("mousedown.brush",j).on("touchstart.brush",j),e.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),k.enter().append("rect").attr("class","extent").style("cursor","move"),l.enter().append("g").attr("class",function(a){return"resize "+a}).style("cursor",function(a){return dG[a]}).append("rect").attr("x",function(a){return/[ew]$/.test(a)?-3:null}).attr("y",function(a){return/^[ns]/.test(a)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),l.style("display",f.empty()?"none":null),l.exit().remove(),b&&(m=ch(b),e.attr("x",m[0]).attr("width",m[1]-m[0]),h(a)),c&&(m=ch(c),e.attr("y",m[0]).attr("height",m[1]-m[0]),i(a)),g(a)})}function g(a){a.selectAll(".resize").attr("transform",function(a){return"translate("+e[+/e$/.test(a)][0]+","+e[+/^s/.test(a)][1]+")"})}function h(a){a.select(".extent").attr("x",e[0][0]),a.selectAll(".extent,.n>rect,.s>rect").attr("width",e[1][0]-e[0][0])}function i(a){a.select(".extent").attr("y",e[0][1]),a.selectAll(".extent,.e>rect,.w>rect").attr("height",e[1][1]-e[0][1])}function j(){function w(){var a=d3.event.changedTouches;return a?d3.touches(d,a)[0]:d3.mouse(d)}function x(){d3.event.keyCode==32&&(p||(q=null,r[0]-=e[1][0],r[1]-=e[1][1],p=2),X())}function y(){d3.event.keyCode==32&&p==2&&(r[0]+=e[1][0],r[1]+=e[1][1],p=0,X())}function z(){var a=w(),d=!1;s&&(a[0]+=s[0],a[1]+=s[1]),p||(d3.event.altKey?(q||(q=[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]),r[0]=e[+(a[0]0?e=c:e=0:c>0&&(b.start({type:"start",alpha:e=c}),d3.timer(a.tick)),a):e},a.start=function(){function s(a,c){var d=t(b),e=-1,f=d.length,g;while(++ee&&(e=h),d.push(h)}for(g=0;g=i[0]&&o<=i[1]&&(k=g[d3.bisect(j,o,1,m)-1],k.y+=n,k.push(e[f]));return g}var a=!0,b=Number,c=ei,d=eg;return e.value=function(a){return arguments.length?(b=a,e):b},e.range=function(a){return arguments.length?(c=d3.functor(a),e):c},e.bins=function(a){return arguments.length?(d=typeof a=="number"?function(b){return eh(b,a)}:d3.functor(a),e):d},e.frequency=function(b){return arguments.length?(a=!!b,e):a},e},d3.layout.hierarchy=function(){function e(f,h,i){var j=b.call(g,f,h),k=eo?f:{data:f};k.depth=h,i.push(k);if(j&&(m=j.length)){var l=-1,m,n=k.children=[],o=0,p=h+1;while(++l0&&(eM(eN(g,a,d),a,m),i+=m,j+=m),k+=g._tree.mod,i+=e._tree.mod,l+=h._tree.mod,j+=f._tree.mod;g&&!eF(f)&&(f._tree.thread=g,f._tree.mod+=k-j),e&&!eE(h)&&(h._tree.thread=e,h._tree.mod+=i-l,d=a)}return d}var f=a.call(this,d,e),g=f[0];eK(g,function(a,b){a._tree={ancestor:a,prelim:0,mod:0,change:0,shift:0,number:b?b._tree.number+1:0}}),h(g),i(g,-g._tree.prelim);var k=eG(g,eI),l=eG(g,eH),m=eG(g,eJ),n=k.x-b(k,l)/2,o=l.x+b(l,k)/2,p=m.depth||1;return eK(g,function(a){a.x=(a.x-n)/(o-n)*c[0],a.y=a.depth/p*c[1],delete a._tree}),f}var a=d3.layout.hierarchy().sort(null).value(null),b=eD,c=[1,1];return d.separation=function(a){return arguments.length?(b=a,d):b},d.size=function(a){return arguments.length?(c=a,d):c},ej(d,a)},d3.layout.treemap=function(){function i(a,b){var c=-1,d=a.length,e,f;while(++c0)d.push(g=f[o-1]),d.area+=g.area,(k=l(d,n))<=h?(f.pop(),h=k):(d.area-=d.pop().area,m(d,n,c,!1),n=Math.min(c.dx,c.dy),d.length=d.area=0,h=Infinity);d.length&&(m(d,n,c,!0),d.length=d.area=0),b.forEach(j)}}function k(a){var b=a.children;if(b&&b.length){var c=e(a),d=b.slice(),f,g=[];i(d,c.dx*c.dy/a.value),g.area=0;while(f=d.pop())g.push(f),g.area+=f.area,f.z!=null&&(m(g,f.z?c.dx:c.dy,c,!d.length),g.length=g.area=0);b.forEach(k)}}function l(a,b){var c=a.area,d,e=0,f=Infinity,g=-1,i=a.length;while(++ge&&(e=d)}return c*=c,b*=b,c?Math.max(b*e*h/c,c/(b*f*h)):Infinity}function m(a,c,d,e){var f=-1,g=a.length,h=d.x,i=d.y,j=c?b(a.area/c):0,k;if(c==d.dx){if(e||j>d.dy)j=d.dy;while(++fd.dx)j=d.dx;while(++f=a.length)return d;if(i)return i=!1,c;var b=f.lastIndex;if(a.charCodeAt(b)===34){var e=b;while(e++50?b:f<-140?c:g<21?d:a)(e)}var a=d3.geo.albers(),b=d3.geo.albers().origin([-160,60]).parallels([55,65]),c=d3.geo.albers().origin([-160,20]).parallels([8,18]),d=d3.geo.albers().origin([-60,10]).parallels([8,18]);return e.scale=function(f){return arguments.length?(a.scale(f),b.scale(f*.6),c.scale(f),d.scale(f*1.5),e.translate(a.translate())):a.scale()},e.translate=function(f){if(!arguments.length)return a.translate();var g=a.scale()/1e3,h=f[0],i=f[1];return a.translate(f),b.translate([h-400*g,i+170*g]),c.translate([h-190*g,i+200*g]),d.translate([h+580*g,i+430*g]),e},e.scale(a.scale())},d3.geo.bonne=function(){function g(g){var h=g[0]*eS-c,i=g[1]*eS-d;if(e){var j=f+e-i,k=h*Math.cos(i)/j;h=j*Math.sin(k),i=j*Math.cos(k)-f}else h*=Math.cos(i),i*=-1;return[a*h+b[0],a*i+b[1]]}var a=200,b=[480,250],c,d,e,f;return g.invert=function(d){var g=(d[0]-b[0])/a,h=(d[1]-b[1])/a;if(e){var i=f+h,j=Math.sqrt(g*g+i*i);h=f+e-j,g=c+j*Math.atan2(g,i)/Math.cos(h)}else h*=-1,g/=Math.cos(h);return[g/eS,h/eS]},g.parallel=function(a){return arguments.length?(f=1/Math.tan(e=a*eS),g):e/eS},g.origin=function(a){return arguments.length?(c=a[0]*eS,d=a[1]*eS,g):[c/eS,d/eS]},g.scale=function(b){return arguments.length?(a=+b,g):a},g.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],g):b},g.origin([0,0]).parallel(45)},d3.geo.equirectangular=function(){function c(c){var d=c[0]/360,e=-c[1]/360;return[a*d+b[0],a*e+b[1]]}var a=500,b=[480,250];return c.invert=function(c){var d=(c[0]-b[0])/a,e=(c[1]-b[1])/a;return[360*d,-360*e]},c.scale=function(b){return arguments.length?(a=+b,c):a},c.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],c):b},c},d3.geo.mercator=function(){function c(c){var d=c[0]/360,e=-(Math.log(Math.tan(Math.PI/4+c[1]*eS/2))/eS)/360;return[a*d+b[0],a*Math.max(-0.5,Math.min(.5,e))+b[1]]}var a=500,b=[480,250];return c.invert=function(c){var d=(c[0]-b[0])/a,e=(c[1]-b[1])/a;return[360*d,2*Math.atan(Math.exp(-360*e*eS))/eS-90]},c.scale=function(b){return arguments.length?(a=+b,c):a},c.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],c):b},c},d3.geo.path=function(){function d(c,d){return typeof a=="function"&&(b=eU(a.apply(this,arguments))),f(c)||null}function e(a){return c(a).join(",")}function h(a){var b=k(a[0]),c=0,d=a.length;while(++c0){b.push("M");while(++h0){b.push("M");while(++kd&&(d=a),fe&&(e=f)}),[[b,c],[d,e]]};var eW={Feature:eX,FeatureCollection:eY,GeometryCollection:eZ,LineString:e$,MultiLineString:e_,MultiPoint:e$,MultiPolygon:fa,Point:fb,Polygon:fc};d3.geo.circle=function(){function e(){}function f(a){return d.distance(a)=k*k+l*l?d[f].index=-1:(d[m].index=-1,o=d[f].angle,m=f,n=g)):(o=d[f].angle,m=f,n=g);e.push(h);for(f=0,g=0;f<2;++g)d[g].index!==-1&&(e.push(d[g].index),f++);p=e.length;for(;g=0?(c=a.ep.r,d=a.ep.l):(c=a.ep.l,d=a.ep.r),a.a===1?(g=c?c.y:-1e6,e=a.c-a.b*g,h=d?d.y:1e6,f=a.c-a.b*h):(e=c?c.x:-1e6,g=a.c-a.a*e,f=d?d.x:1e6,h=a.c-a.a*f);var i=[e,g],j=[f,h];b[a.region.l.index].push(i,j),b[a.region.r.index].push(i,j)}),b.map(function(b,c){var d=a[c][0],e=a[c][1];return b.forEach(function(a){a.angle=Math.atan2(a[0]-d,a[1]-e)}),b.sort(function(a,b){return a.angle-b.angle}).filter(function(a,c){return!c||a.angle-b[c-1].angle>1e-10})})};var fm={l:"r",r:"l"};d3.geom.delaunay=function(a){var b=a.map(function(){return[]}),c=[];return fn(a,function(c){b[c.region.l.index].push(a[c.region.r.index])}),b.forEach(function(b,d){var e=a[d],f=e[0],g=e[1];b.forEach(function(a){a.angle=Math.atan2(a[0]-f,a[1]-g)}),b.sort(function(a,b){return a.angle-b.angle});for(var h=0,i=b.length-1;h=g,j=b.y>=h,l=(j<<1)+i;a.leaf=!1,a=a.nodes[l]||(a.nodes[l]=fo()),i?c=g:e=g,j?d=h:f=h,k(a,b,c,d,e,f)}var f,g=-1,h=a.length;h&&isNaN(a[0].x)&&(a=a.map(fq));if(arguments.length<5)if(arguments.length===3)e=d=c,c=b;else{b=c=Infinity,d=e=-Infinity;while(++gd&&(d=f.x),f.y>e&&(e=f.y);var i=d-b,j=e-c;i>j?e=c+i:d=b+j}var m=fo();return m.add=function(a){k(m,a,b,c,d,e)},m.visit=function(a){fp(a,m,b,c,d,e)},a.forEach(m.add),m},d3.time={};var fr=Date;fs.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(a){this._.setUTCDate(a)},setDay:function(a){this._.setUTCDay(a)},setFullYear:function(a){this._.setUTCFullYear(a)},setHours:function(a){this._.setUTCHours(a)},setMilliseconds:function(a){this._.setUTCMilliseconds(a)},setMinutes:function(a){this._.setUTCMinutes(a)},setMonth:function(a){this._.setUTCMonth(a)},setSeconds:function(a){this._.setUTCSeconds(a)},setTime:function(a){this._.setTime(a)}},d3.time.format=function(a){function c(c){var d=[],e=-1,f=0,g,h;while(++e=12?"PM":"AM"},S:function(a){return fu(a.getSeconds())},U:function(a){return fu(d3.time.sundayOfYear(a))},w:function(a){return a.getDay()},W:function(a){return fu(d3.time.mondayOfYear(a))},x:d3.time.format("%m/%d/%y"),X:d3.time.format("%H:%M:%S"),y:function(a){return fu(a.getFullYear()%100)},Y:function(a){return fw(a.getFullYear()%1e4)},Z:f$,"%":function(a){return"%"}},fz={a:fA,A:fB,b:fE,B:fG,c:fK,d:fR,e:fR,H:fS,I:fT,L:fW,m:fQ,M:fU,p:fY,S:fV,x:fL,X:fM,y:fO,Y:fN},fC=/^(?:sun|mon|tue|wed|thu|fri|sat)/i,fD=/^(?:Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)/i;d3_time_weekdays=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var fF=d3.map({jan:0,feb:1,mar:2,apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11}),fH=/^(?:January|February|March|April|May|June|July|August|September|October|November|December)/ig,fI=d3.map({january:0,february:1,march:2,april:3,may:4,june:5,july:6,august:7,september:8,october:9,november:10,december:11}),fJ=["January","February","March","April","May","June","July","August","September","October","November","December"],fX=/\s*\d+/,fZ=d3.map({am:0,pm:1});d3.time.format.utc=function(a){function c(a){try{fr=fs;var c=new fr;return c._=a,b(c)}finally{fr=Date}}var b=d3.time.format(a);return c.parse=function(a){try{fr=fs;var c=b.parse(a);return c&&c._}finally{fr=Date}},c.toString=b.toString,c};var f_=d3.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ");d3.time.format.iso=Date.prototype.toISOString?ga:f_,ga.parse=function(a){return new Date(a)},ga.toString=f_.toString,d3.time.second=gb(function(a){return new fr(Math.floor(a/1e3)*1e3)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*1e3)},function(a){return a.getSeconds()}),d3.time.seconds=d3.time.second.range,d3.time.seconds.utc=d3.time.second.utc.range,d3.time.minute=gb(function(a){return new fr(Math.floor(a/6e4)*6e4)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*6e4)},function(a){return a.getMinutes()}),d3.time.minutes=d3.time.minute.range,d3.time.minutes.utc=d3.time.minute.utc.range,d3.time.hour=gb(function(a){var b=a.getTimezoneOffset()/60;return new fr((Math.floor(a/36e5-b)+b)*36e5)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*36e5)},function(a){return a.getHours()}),d3.time.hours=d3.time.hour.range,d3.time.hours.utc=d3.time.hour.utc.range,d3.time.day=gb(function(a){return new fr(a.getFullYear(),a.getMonth(),a.getDate())},function(a,b){a.setDate(a.getDate()+b)},function(a){return a.getDate()-1}),d3.time.days=d3.time.day.range,d3.time.days.utc=d3.time.day.utc.range,d3.time.dayOfYear=function(a){var b=d3.time.year(a);return Math.floor((a-b)/864e5-(a.getTimezoneOffset()-b.getTimezoneOffset())/1440)},d3_time_weekdays.forEach(function(a,b){a=a.toLowerCase(),b=7-b;var c=d3.time[a]=gb(function(a){return(a=d3.time.day(a)).setDate(a.getDate()-(a.getDay()+b)%7),a},function(a,b){a.setDate(a.getDate()+Math.floor(b)*7)},function(a){var c=d3.time.year(a).getDay();return Math.floor((d3.time.dayOfYear(a)+(c+b)%7)/7)-(c!==b)});d3.time[a+"s"]=c.range,d3.time[a+"s"].utc=c.utc.range,d3.time[a+"OfYear"]=function(a){var c=d3.time.year(a).getDay();return Math.floor((d3.time.dayOfYear(a)+(c+b)%7)/7)}}),d3.time.week=d3.time.sunday,d3.time.weeks=d3.time.sunday.range,d3.time.weeks.utc=d3.time.sunday.utc.range,d3.time.weekOfYear=d3.time.sundayOfYear,d3.time.month=gb(function(a){return new fr(a.getFullYear(),a.getMonth(),1)},function(a,b){a.setMonth(a.getMonth()+b)},function(a){return a.getMonth()}),d3.time.months=d3.time.month.range,d3.time.months.utc=d3.time.month.utc.range,d3.time.year=gb(function(a){return new fr(a.getFullYear(),0,1)},function(a,b){a.setFullYear(a.getFullYear()+b)},function(a){return a.getFullYear()}),d3.time.years=d3.time.year.range,d3.time.years.utc=d3.time.year.utc.range;var gj=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],gk=[[d3.time.second,1],[d3.time.second,5],[d3.time.second,15],[d3.time.second,30],[d3.time.minute,1],[d3.time.minute,5],[d3.time.minute,15],[d3.time.minute,30],[d3.time.hour,1],[d3.time.hour,3],[d3.time.hour,6],[d3.time.hour,12],[d3.time.day,1],[d3.time.day,2],[d3.time.week,1],[d3.time.month,1],[d3.time.month,3],[d3.time.year,1]],gl=[[d3.time.format("%Y"),function(a){return!0}],[d3.time.format("%B"),function(a){return a.getMonth()}],[d3.time.format("%b %d"),function(a){return a.getDate()!=1}],[d3.time.format("%a %d"),function(a){return a.getDay()&&a.getDate()!=1}],[d3.time.format("%I %p"),function(a){return a.getHours()}],[d3.time.format("%I:%M"),function(a){return a.getMinutes()}],[d3.time.format(":%S"),function(a){return a.getSeconds()}],[d3.time.format(".%L"),function(a){return a.getMilliseconds()}]],gm=d3.scale.linear(),gn=gg(gl);gk.year=function(a,b){return gm.domain(a.map(gi)).ticks(b).map(gh)},d3.time.scale=function(){return gd(d3.scale.linear(),gk,gn)};var go=gk.map(function(a){return[a[0].utc,a[1]]}),gp=[[d3.time.format.utc("%Y"),function(a){return!0}],[d3.time.format.utc("%B"),function(a){return a.getUTCMonth()}],[d3.time.format.utc("%b %d"),function(a){return a.getUTCDate()!=1}],[d3.time.format.utc("%a %d"),function(a){return a.getUTCDay()&&a.getUTCDate()!=1}],[d3.time.format.utc("%I %p"),function(a){return a.getUTCHours()}],[d3.time.format.utc("%I:%M"),function(a){return a.getUTCMinutes()}],[d3.time.format.utc(":%S"),function(a){return a.getUTCSeconds()}],[d3.time.format.utc(".%L"),function(a){return a.getUTCMilliseconds()}]],gq=gg(gp);go.year=function(a,b){return gm.domain(a.map(gs)).ticks(b).map(gr)},d3.time.scale.utc=function(){return gd(d3.scale.linear(),go,gq)}})(); \ No newline at end of file +(function(){function f(a,b){try{for(var c in b)Object.defineProperty(a.prototype,c,{value:b[c],enumerable:!1})}catch(d){a.prototype=b}}function h(a){var b=-1,c=a.length,d=[];while(++b=0?a.substring(b):(b=a.length,""),d=[];while(b>0)d.push(a.substring(b-=3,b+3));return d.reverse().join(",")+c}function G(a,b){return{scale:Math.pow(10,(8-b)*3),symbol:a}}function M(a){return function(b){return b<=0?0:b>=1?1:a(b)}}function N(a){return function(b){return 1-a(1-b)}}function O(a){return function(b){return.5*(b<.5?a(2*b):2-a(2-2*b))}}function P(a){return a}function Q(a){return function(b){return Math.pow(b,a)}}function R(a){return 1-Math.cos(a*Math.PI/2)}function S(a){return Math.pow(2,10*(a-1))}function T(a){return 1-Math.sqrt(1-a*a)}function U(a,b){var c;return arguments.length<2&&(b=.45),arguments.length<1?(a=1,c=b/4):c=b/(2*Math.PI)*Math.asin(1/a),function(d){return 1+a*Math.pow(2,10*-d)*Math.sin((d-c)*2*Math.PI/b)}}function V(a){return a||(a=1.70158),function(b){return b*b*((a+1)*b-a)}}function W(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}function X(){d3.event.stopPropagation(),d3.event.preventDefault()}function Y(){var a=d3.event,b;while(b=a.sourceEvent)a=b;return a}function Z(a){var b=new y,c=0,d=arguments.length;while(++c.04045?Math.pow((a+.055)/1.055,2.4):a/12.92}function h(a){return a>.008856?Math.pow(a,1/3):7.787*a+16/116}a/=255,b/=255,c/=255,a=d(a)*100,b=d(b)*100,c=d(c)*100;var e=a*.4124+b*.3576+c*.1805,f=a*.2126+b*.7152+c*.0722,g=a*.0193+b*.1192+c*.9505;e/=95.047,f/=100,g/=108.883,e=h(e),f=h(f),g=h(g);var i=f>.008856?116*f-16:903.3*f,j=500*(e-f),c=200*(f-g);return bn(i,j,c)}function bi(a){var b=parseFloat(a);return a.charAt(a.length-1)==="%"?Math.round(b*2.55):b}function bk(a,b,c){return new bl(a,b,c)}function bl(a,b,c){this.h=a,this.s=b,this.l=c}function bm(a,b,c){function f(a){return a>360?a-=360:a<0&&(a+=360),a<60?d+(e-d)*a/60:a<180?e:a<240?d+(e-d)*(240-a)/60:d}function g(a){return Math.round(f(a)*255)}var d,e;return a%=360,a<0&&(a+=360),b=b<0?0:b>1?1:b,c=c<0?0:c>1?1:c,e=c<=.5?c*(1+b):c+b-c*b,d=2*c-e,bc(g(a+120),g(a),g(a-120))}function bn(a,b,c){return new bo(a,b,c)}function bo(a,b,c){this.l=a,this.a=b,this.b=c}function bp(a,b,c){function g(a){var b=a*a*a;return b>.008856?b:(a-16/116)/7.787}function j(a){return a=a>.0031308?1.055*Math.pow(a,1/2.4)-.055:12.92*a,Math.round(a*255)}var d=(a+16)/116,e=b/500+d,f=d-c/200,e=g(e)*.95047,d=g(d),f=g(f)*1.08883,h=e*3.2406+d*-1.5372+f*-0.4986,i=e*-0.9689+d*1.8758+f*.0415,c=e*.0557+d*-0.204+f*1.057;return bc(j(h),j(i),j(c))}function bq(a,b,d){var e=Math.atan2(d,b);return e=e>0?e/Math.PI*180:360-Math.abs(e)/Math.PI*180,c=Math.sqrt(b*b+d*d),bs(a,c,e)}function br(a,b,c){var d=c*(Math.PI/180),e=Math.cos(d)*b,f=Math.sin(d)*b;return bn(a,e,f)}function bs(a,b,c){return new bt(a,b,c)}function bt(a,b,c){this.l=a,this.c=b,this.h=c}function bu(a,b,c){var d=c*(Math.PI/180),e=Math.cos(d)*b,f=Math.sin(d)*b;return bn(a,e,f)}function bv(a){return k(a,bB),a}function bC(a){return function(){return bw(a,this)}}function bD(a){return function(){return bx(a,this)}}function bF(a,b){function f(){if(b=this.classList)return b.add(a);var b=this.className,d=b.baseVal!=null,e=d?b.baseVal:b;c.lastIndex=0,c.test(e)||(e=u(e+" "+a),d?b.baseVal=e:this.className=e)}function g(){if(b=this.classList)return b.remove(a);var b=this.className,d=b.baseVal!=null,e=d?b.baseVal:b;e=u(e.replace(c," ")),d?b.baseVal=e:this.className=e}function h(){(b.apply(this,arguments)?f:g).call(this)}var c=new RegExp("(^|\\s+)"+d3.requote(a)+"(\\s+|$)","g");if(arguments.length<2){var d=this.node();if(e=d.classList)return e.contains(a);var e=d.className;return c.lastIndex=0,c.test(e.baseVal!=null?e.baseVal:e)}return this.each(typeof b=="function"?h:b?f:g)}function bG(a){return{__data__:a}}function bH(a){return function(){return bA(this,a)}}function bI(a){return arguments.length||(a=d3.ascending),function(b,c){return a(b&&b.__data__,c&&c.__data__)}}function bK(a){return k(a,bL),a}function bM(a,b,c){k(a,bQ);var d=new l,e=d3.dispatch("start","end"),f=bT;return a.id=b,a.time=c,a.tween=function(b,c){return arguments.length<2?d.get(b):(c==null?d.remove(b):d.set(b,c),a)},a.ease=function(b){return arguments.length?(f=typeof b=="function"?b:d3.ease.apply(d3,arguments),a):f},a.each=function(b,c){return arguments.length<2?bU.call(a,b):(e.on(b,c),a)},d3.timer(function(g){return a.each(function(h,i,j){function p(a){return o.active>b?r():(o.active=b,d.forEach(function(a,b){(tween=b.call(l,h,i))&&k.push(tween)}),e.start.call(l,h,i),q(a)||d3.timer(q,0,c),1)}function q(a){if(o.active!==b)return r();var c=(a-m)/n,d=f(c),g=k.length;while(g>0)k[--g].call(l,d);if(c>=1)return r(),bS=b,e.end.call(l,h,i),bS=0,1}function r(){return--o.count||delete l.__transition__,1}var k=[],l=this,m=a[j][i].delay,n=a[j][i].duration,o=l.__transition__||(l.__transition__={active:0,count:0});++o.count,m<=g?p(g):d3.timer(p,m,c)}),1},0,c),a}function bO(a,b,c){return c!=""&&bN}function bP(a,b){function d(a,d,e){var f=b.call(this,a,d);return f==null?e!=""&&bN:e!=f&&c(e,f)}function e(a,d,e){return e!=b&&c(e,b)}var c=_(a);return typeof b=="function"?d:b==null?bO:(b+="",e)}function bU(a){for(var b=0,c=this.length;b=c.delay&&(c.flush=c.callback(a)),c=c.next;var d=bZ()-b;d>24?(isFinite(d)&&(clearTimeout(bX),bX=setTimeout(bY,d)),bW=0):(bW=1,b$(bY))}function bZ(){var a=null,b=bV,c=Infinity;while(b)b.flush?b=a?a.next=b.next:bV=b.next:(c=Math.min(c,b.then+b.delay),b=(a=b).next);return c}function b_(a){var b=[a.a,a.b],c=[a.c,a.d],d=cb(b),e=ca(b,c),f=cb(cc(c,b,-e))||0;b[0]*c[1]2?cs:cr,i=d?bb:ba;return e=g(a,b,i,c),f=g(b,a,i,d3.interpolate),h}function h(a){return e(a)}var e,f;return h.invert=function(a){return f(a)},h.domain=function(b){return arguments.length?(a=b.map(Number),g()):a},h.range=function(a){return arguments.length?(b=a,g()):b},h.rangeRound=function(a){return h.range(a).interpolate(d3.interpolateRound)},h.clamp=function(a){return arguments.length?(d=a,g()):d},h.interpolate=function(a){return arguments.length?(c=a,g()):c},h.ticks=function(b){return cp(a,b)},h.tickFormat=function(b){return cq(a,b)},h.nice=function(){return cj(a,cn),g()},h.copy=function(){return cl(a,b,c,d)},g()}function cm(a,b){return d3.rebind(a,b,"range","rangeRound","interpolate","clamp")}function cn(a){return a=Math.pow(10,Math.round(Math.log(a)/Math.LN10)-1),{floor:function(b){return Math.floor(b/a)*a},ceil:function(b){return Math.ceil(b/a)*a}}}function co(a,b){var c=ch(a),d=c[1]-c[0],e=Math.pow(10,Math.floor(Math.log(d/b)/Math.LN10)),f=b/d*e;return f<=.15?e*=10:f<=.35?e*=5:f<=.75&&(e*=2),c[0]=Math.ceil(c[0]/e)*e,c[1]=Math.floor(c[1]/e)*e+e*.5,c[2]=e,c}function cp(a,b){return d3.range.apply(d3,co(a,b))}function cq(a,b){return d3.format(",."+Math.max(0,-Math.floor(Math.log(co(a,b)[2])/Math.LN10+.01))+"f")}function cr(a,b,c,d){var e=c(a[0],a[1]),f=d(b[0],b[1]);return function(a){return f(e(a))}}function cs(a,b,c,d){var e=[],f=[],g=0,h=Math.min(a.length,b.length)-1;a[h]0;j--)e.push(c(f)*j)}else{for(;fi;g--);e=e.slice(f,g)}return e},d.tickFormat=function(a,e){arguments.length<2&&(e=cu);if(arguments.length<1)return e;var f=a/d.ticks().length,g=b===cw?(h=-1e-12,Math.floor):(h=1e-12,Math.ceil),h;return function(a){return a/c(g(b(a)+h))0?0:-a)/Math.LN10}function cx(a,b){function e(b){return a(c(b))}var c=cy(b),d=cy(1/b);return e.invert=function(b){return d(a.invert(b))},e.domain=function(b){return arguments.length?(a.domain(b.map(c)),e):a.domain().map(d)},e.ticks=function(a){return cp(e.domain(),a)},e.tickFormat=function(a){return cq(e.domain(),a)},e.nice=function(){return e.domain(cj(e.domain(),cn))},e.exponent=function(a){if(!arguments.length)return b;var f=e.domain();return c=cy(b=a),d=cy(1/b),e.domain(f)},e.copy=function(){return cx(a.copy(),b)},cm(e,a)}function cy(a){return function(b){return b<0?-Math.pow(-b,a):Math.pow(b,a)}}function cz(a,b){function f(b){return d[((c.get(b)||c.set(b,a.push(b)))-1)%d.length]}function g(b,c){return d3.range(a.length).map(function(a){return b+c*a})}var c,d,e;return f.domain=function(d){if(!arguments.length)return a;a=[],c=new l;var e=-1,g=d.length,h;while(++e1){h=b[1],f=a[i],i++,d+="C"+(e[0]+g[0])+","+(e[1]+g[1])+","+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1];for(var j=2;j9&&(f=c*3/Math.sqrt(f),g[h]=f*d,g[h+1]=f*e));h=-1;while(++h<=i)f=(a[Math.min(i,h+1)][0]-a[Math.max(0,h-1)][0])/(6*(1+g[h]*g[h])),b.push([f||0,g[h]*f||0]);return b}function dl(a){return a.length<3?cT(a):a[0]+cZ(a,dk(a))}function dm(a){var b,c=-1,d=a.length,e,f;while(++c1){var d=ch(a.domain()),e,f=-1,g=b.length,h=(b[1]-b[0])/++c,i,j;while(++f0;)(j=+b[f]-i*h)>=d[0]&&e.push(j);for(--f,i=0;++id&&(c=b,d=e);return c}function ef(a){return a.reduce(eg,0)}function eg(a,b){return a+b[1]}function eh(a,b){return ei(a,Math.ceil(Math.log(b.length)/Math.LN2+1))}function ei(a,b){var c=-1,d=+a[0],e=(a[1]-d)/b,f=[];while(++c<=b)f[c]=e*c+d;return f}function ej(a){return[d3.min(a),d3.max(a)]}function ek(a,b){return d3.rebind(a,b,"sort","children","value"),a.links=eo,a.nodes=function(b){return ep=!0,(a.nodes=a)(b)},a}function el(a){return a.children}function em(a){return a.value}function en(a,b){return b.value-a.value}function eo(a){return d3.merge(a.map(function(a){return(a.children||[]).map(function(b){return{source:a,target:b}})}))}function eq(a,b){return a.value-b.value}function er(a,b){var c=a._pack_next;a._pack_next=b,b._pack_prev=a,b._pack_next=c,c._pack_prev=b}function es(a,b){a._pack_next=b,b._pack_prev=a}function et(a,b){var c=b.x-a.x,d=b.y-a.y,e=a.r+b.r;return e*e-c*c-d*d>.001}function eu(a){function l(a){b=Math.min(a.x-a.r,b),c=Math.max(a.x+a.r,c),d=Math.min(a.y-a.r,d),e=Math.max(a.y+a.r,e)}var b=Infinity,c=-Infinity,d=Infinity,e=-Infinity,f=a.length,g,h,i,j,k;a.forEach(ev),g=a[0],g.x=-g.r,g.y=0,l(g);if(f>1){h=a[1],h.x=h.r,h.y=0,l(h);if(f>2){i=a[2],ez(g,h,i),l(i),er(g,i),g._pack_prev=i,er(i,h),h=g._pack_next;for(var m=3;m0&&(a=d)}return a}function eI(a,b){return a.x-b.x}function eJ(a,b){return b.x-a.x}function eK(a,b){return a.depth-b.depth}function eL(a,b){function c(a,d){var e=a.children;if(e&&(i=e.length)){var f,g=null,h=-1,i;while(++h=0)f=d[e]._tree,f.prelim+=b,f.mod+=b,b+=f.shift+(c+=f.change)}function eN(a,b,c){a=a._tree,b=b._tree;var d=c/(b.number-a.number);a.change+=d,b.change-=d,b.shift+=c,b.prelim+=c,b.mod+=c}function eO(a,b,c){return a._tree.ancestor.parent==b.parent?a._tree.ancestor:c}function eP(a){return{x:a.x,y:a.y,dx:a.dx,dy:a.dy}}function eQ(a,b){var c=a.x+b[3],d=a.y+b[0],e=a.dx-b[1]-b[3],f=a.dy-b[0]-b[2];return e<0&&(c+=e/2,e=0),f<0&&(d+=f/2,f=0),{x:c,y:d,dx:e,dy:f}}function eR(a){return a.map(eS).join(",")}function eS(a){return/[",\n]/.test(a)?'"'+a.replace(/\"/g,'""')+'"':a}function eU(a,b){return function(c){return c&&a.hasOwnProperty(c.type)?a[c.type](c):b}}function eV(a){return"m0,"+a+"a"+a+","+a+" 0 1,1 0,"+ -2*a+"a"+a+","+a+" 0 1,1 0,"+2*a+"z"}function eW(a,b){eX.hasOwnProperty(a.type)&&eX[a.type](a,b)}function eY(a,b){eW(a.geometry,b)}function eZ(a,b){for(var c=a.features,d=0,e=c.length;d0}function fl(a,b,c){return(c[0]-b[0])*(a[1]-b[1])<(c[1]-b[1])*(a[0]-b[0])}function fm(a,b,c,d){var e=a[0],f=b[0],g=c[0],h=d[0],i=a[1],j=b[1],k=c[1],l=d[1],m=e-g,n=f-e,o=h-g,p=i-k,q=j-i,r=l-k,s=(o*p-r*m)/(r*n-o*q);return[e+s*n,i+s*q]}function fo(a,b){var c={list:a.map(function(a,b){return{index:b,x:a[0],y:a[1]}}).sort(function(a,b){return a.yb.y?1:a.xb.x?1:0}),bottomSite:null},d={list:[],leftEnd:null,rightEnd:null,init:function(){d.leftEnd=d.createHalfEdge(null,"l"),d.rightEnd=d.createHalfEdge(null,"l"),d.leftEnd.r=d.rightEnd,d.rightEnd.l=d.leftEnd,d.list.unshift(d.leftEnd,d.rightEnd)},createHalfEdge:function(a,b){return{edge:a,side:b,vertex:null,l:null,r:null}},insert:function(a,b){b.l=a,b.r=a.r,a.r.l=b,a.r=b},leftBound:function(a){var b=d.leftEnd;do b=b.r;while(b!=d.rightEnd&&e.rightOf(b,a));return b=b.l,b},del:function(a){a.l.r=a.r,a.r.l=a.l,a.edge=null},right:function(a){return a.r},left:function(a){return a.l},leftRegion:function(a){return a.edge==null?c.bottomSite:a.edge.region[a.side]},rightRegion:function(a){return a.edge==null?c.bottomSite:a.edge.region[fn[a.side]]}},e={bisect:function(a,b){var c={region:{l:a,r:b},ep:{l:null,r:null}},d=b.x-a.x,e=b.y-a.y,f=d>0?d:-d,g=e>0?e:-e;return c.c=a.x*d+a.y*e+(d*d+e*e)*.5,f>g?(c.a=1,c.b=e/d,c.c/=d):(c.b=1,c.a=d/e,c.c/=e),c},intersect:function(a,b){var c=a.edge,d=b.edge;if(!c||!d||c.region.r==d.region.r)return null;var e=c.a*d.b-c.b*d.a;if(Math.abs(e)<1e-10)return null;var f=(c.c*d.b-d.c*c.b)/e,g=(d.c*c.a-c.c*d.a)/e,h=c.region.r,i=d.region.r,j,k;h.y=k.region.r.x;return l&&j.side==="l"||!l&&j.side==="r"?null:{x:f,y:g}},rightOf:function(a,b){var c=a.edge,d=c.region.r,e=b.x>d.x;if(e&&a.side==="l")return 1;if(!e&&a.side==="r")return 0;if(c.a===1){var f=b.y-d.y,g=b.x-d.x,h=0,i=0;!e&&c.b<0||e&&c.b>=0?i=h=f>=c.b*g:(i=b.x+b.y*c.b>c.c,c.b<0&&(i=!i),i||(h=1));if(!h){var j=d.x-c.region.l.x;i=c.b*(g*g-f*f)m*m+n*n}return a.side==="l"?i:!i},endPoint:function(a,c,d){a.ep[c]=d;if(!a.ep[fn[c]])return;b(a)},distance:function(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)}},f={list:[],insert:function(a,b,c){a.vertex=b,a.ystar=b.y+c;for(var d=0,e=f.list,g=e.length;dh.ystar||a.ystar==h.ystar&&b.x>h.vertex.x)continue;break}e.splice(d,0,a)},del:function(a){for(var b=0,c=f.list,d=c.length;bo.y&&(p=n,n=o,o=p,t="r"),s=e.bisect(n,o),m=d.createHalfEdge(s,t),d.insert(k,m),e.endPoint(s,fn[t],r),q=e.intersect(k,m),q&&(f.del(k),f.insert(k,q,e.distance(q,n))),q=e.intersect(m,l),q&&f.insert(m,q,e.distance(q,n));else break}for(i=d.right(d.leftEnd);i!=d.rightEnd;i=d.right(i))b(i.edge)}function fp(){return{leaf:!0,nodes:[],point:null}}function fq(a,b,c,d,e,f){if(!a(b,c,d,e,f)){var g=(c+e)*.5,h=(d+f)*.5,i=b.nodes;i[0]&&fq(a,i[0],c,d,g,h),i[1]&&fq(a,i[1],g,d,e,h),i[2]&&fq(a,i[2],c,h,g,f),i[3]&&fq(a,i[3],g,h,e,f)}}function fr(a){return{x:a[0],y:a[1]}}function ft(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function fu(a,b,c,d){var e,f,g=0,h=b.length,i=c.length;while(g=i)return-1;e=b.charCodeAt(g++);if(e==37){f=fA[b.charAt(g++)];if(!f||(d=f(a,c,d))<0)return-1}else if(e!=c.charCodeAt(d++))return-1}return d}function fB(a,b,c){return fD.test(b.substring(c,c+=3))?c:-1}function fC(a,b,c){fE.lastIndex=0;var d=fE.exec(b.substring(c,c+10));return d?c+=d[0].length:-1}function fF(a,b,c){var d=fG.get(b.substring(c,c+=3).toLowerCase());return d==null?-1:(a.setMonth(d),c)}function fH(a,b,c){fI.lastIndex=0;var d=fI.exec(b.substring(c,c+12));return d?(a.setMonth(fJ.get(d[0].toLowerCase())),c+=d[0].length):-1}function fL(a,b,c){return fu(a,fz.c.toString(),b,c)}function fM(a,b,c){return fu(a,fz.x.toString(),b,c)}function fN(a,b,c){return fu(a,fz.X.toString(),b,c)}function fO(a,b,c){fY.lastIndex=0;var d=fY.exec(b.substring(c,c+4));return d?(a.setFullYear(d[0]),c+=d[0].length):-1}function fP(a,b,c){fY.lastIndex=0;var d=fY.exec(b.substring(c,c+2));return d?(a.setFullYear(fQ()+ +d[0]),c+=d[0].length):-1}function fQ(){return~~((new Date).getFullYear()/1e3)*1e3}function fR(a,b,c){fY.lastIndex=0;var d=fY.exec(b.substring(c,c+2));return d?(a.setMonth(d[0]-1),c+=d[0].length):-1}function fS(a,b,c){fY.lastIndex=0;var d=fY.exec(b.substring(c,c+2));return d?(a.setDate(+d[0]),c+=d[0].length):-1}function fT(a,b,c){fY.lastIndex=0;var d=fY.exec(b.substring(c,c+2));return d?(a.setHours(+d[0]),c+=d[0].length):-1}function fU(a,b,c){return a.hour12=!0,fT(a,b,c)}function fV(a,b,c){fY.lastIndex=0;var d=fY.exec(b.substring(c,c+2));return d?(a.setMinutes(+d[0]),c+=d[0].length):-1}function fW(a,b,c){fY.lastIndex=0;var d=fY.exec(b.substring(c,c+2));return d?(a.setSeconds(+d[0]),c+=d[0].length):-1}function fX(a,b,c){fY.lastIndex=0 +;var d=fY.exec(b.substring(c,c+3));return d?(a.setMilliseconds(+d[0]),c+=d[0].length):-1}function fZ(a,b,c){var d=f$.get(b.substring(c,c+=2).toLowerCase());return d==null?-1:(a.hour12pm=d,c)}function f_(a){var b=a.getTimezoneOffset(),c=b>0?"-":"+",d=~~(Math.abs(b)/60),e=Math.abs(b)%60;return c+fv(d)+fv(e)}function gb(a){return a.toISOString()}function gc(a,b,c){function d(b){var c=a(b),d=f(c,1);return b-c1)while(gb?1:a>=b?0:NaN},d3.descending=function(a,b){return ba?1:b>=a?0:NaN},d3.mean=function(a,b){var c=a.length,d,e=0,f=-1,g=0;if(arguments.length===1)while(++f1&&(a=a.map(b)),a=a.filter(q),a.length?d3.quantile(a.sort(d3.ascending),.5):undefined},d3.min=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++cf&&(e=f)}else{while(++cf&&(e=f)}return e},d3.max=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++ce&&(e=f)}else{while(++ce&&(e=f)}return e},d3.extent=function(a,b){var c=-1,d=a.length,e,f,g;if(arguments.length===1){while(++cf&&(e=f),gf&&(e=f),g1);return a+b*c*Math.sqrt(-2*Math.log(e)/e)}}},d3.sum=function(a,b){var c=0,d=a.length,e,f=-1;if(arguments.length===1)while(++f>1;a.call(b,b[f],f)>1;c0&&(e=f);return e},d3.last=function(a,b){var c=0,d=a.length,e=a[0],f;arguments.length===1&&(b=d3.ascending);while(++c=b.length)return e?e.call(a,c):d?c.sort(d):c;var h=-1,i=c.length,j=b[g++],k,m,n=new l,o,p={};while(++h=b.length)return a;var e=[],f=c[d++],h;for(h in a)e.push({key:h,values:g(a[h],d)});return f&&e.sort(function(a,b){return f(a.key,b.key)}),e}var a={},b=[],c=[],d,e;return a.map=function(a){return f(a,0)},a.entries=function(a){return g(f(a,0),0)},a.key=function(c){return b.push(c),a},a.sortKeys=function(d){return c[b.length-1]=d,a},a.sortValues=function(b){return d=b,a},a.rollup=function(b){return e=b,a},a},d3.keys=function(a){var b=[];for(var c in a)b.push(c);return b},d3.values=function(a){var b=[];for(var c in a)b.push(a[c]);return b},d3.entries=function(a){var b=[];for(var c in a)b.push({key:c,value:a[c]});return b},d3.permute=function(a,b){var c=[],d=-1,e=b.length;while(++db)d.push(g/e);else while((g=a+c*++f)=0&&(c=a.substring(0,b),a=a.substring(b+1)),x.hasOwnProperty(c)?{space:x[c],local:a}:a}},d3.dispatch=function(){var a=new y,b=-1,c=arguments.length;while(++b0&&(d=a.substring(c+1),a=a.substring(0,c)),arguments.length<2?this[a].on(d):this[a].on(d,b)},d3.format=function(a){var b=A.exec(a),c=b[1]||" ",d=b[3]||"",e=b[5],f=+b[6],g=b[7],h=b[8],i=b[9],j=1,k="",l=!1;h&&(h=+h.substring(1)),e&&(c="0",g&&(f-=Math.floor((f-1)/4)));switch(i){case"n":g=!0,i="g";break;case"%":j=100,k="%",i="f";break;case"p":j=100,k="%",i="r";break;case"d":l=!0,h=0;break;case"s":j=-1,i="r"}return i=="r"&&!h&&(i="g"),i=B.get(i)||D,function(a){if(l&&a%1)return"";var b=a<0&&(a=-a)?"−":d;if(j<0){var m=d3.formatPrefix(a,h);a*=m.scale,k=m.symbol}else a*=j;a=i(a,h);if(e){var n=a.length+b.length;n=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,B=d3.map({g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},r:function(a,b){return d3.round(a,b=C(a,b)).toFixed(Math.max(0,Math.min(20,b)))}}),F=["y","z","a","f","p","n","μ","m","","k","M","G","T","P","E","Z","Y"].map(G);d3.formatPrefix=function(a,b){var c=0;return a&&(a<0&&(a*=-1),b&&(a=d3.round(a,C(a,b))),c=1+Math.floor(1e-12+Math.log(a)/Math.LN10),c=Math.max(-24,Math.min(24,Math.floor((c<=0?c+1:c-1)/3)*3))),F[8+c/3]};var H=Q(2),I=Q(3),J=function(){return P},K=d3.map({linear:J,poly:Q,quad:function(){return H},cubic:function(){return I},sin:function(){return R},exp:function(){return S},circle:function(){return T},elastic:U,back:V,bounce:function(){return W}}),L=d3.map({"in":P,out:N,"in-out":O,"out-in":function(a){return O(N(a))}});d3.ease=function(a){var b=a.indexOf("-"),c=b>=0?a.substring(0,b):a,d=b>=0?a.substring(b+1):"in";return c=K.get(c)||J,d=L.get(d)||P,M(d(c.apply(null,Array.prototype.slice.call(arguments,1))))},d3.event=null,d3.interpolate=function(a,b){var c=d3.interpolators.length,d;while(--c>=0&&!(d=d3.interpolators[c](a,b)));return d},d3.interpolateNumber=function(a,b){return b-=a,function(c){return a+b*c}},d3.interpolateRound=function(a,b){return b-=a,function(c){return Math.round(a+b*c)}},d3.interpolateString=function(a,b){var c,d,e,f=0,g=0,h=[],i=[],j,k;$.lastIndex=0;for(d=0;c=$.exec(b);++d)c.index&&h.push(b.substring(f,g=c.index)),i.push({i:h.length,x:c[0]}),h.push(null),f=$.lastIndex;f0?a/Math.PI*180:360-Math.abs(a)/Math.PI*180},bo.prototype.chroma=function(a){var b=this.a,c=this.b;return arguments.length?br(this.l,a,this.hue()):Math.sqrt(b*b+c*c)},bo.prototype.toString=function(){return this.rgb().toString()},d3.cielch=function(a,b,c){return arguments.length===1?a instanceof bt?bs(a.l,a.c,a.h):bf(""+a,bc,bm).cielab().cielch():bs(+a,+b,+c)},bt.prototype.cielab=function(){return bu(this.l,this.c,this.h)},bt.prototype.brighter=function(a){return bs(Math.min(100,this.l+18*(arguments.length?a:1)),this.c,this.h)},bt.prototype.darker=function(a){return bs(Math.max(0,this.l-18*(arguments.length?a:1)),this.c,this.h)},bt.prototype.toString=function(){return this.cielab().toString()};var bw=function(a,b){return b.querySelector(a)},bx=function(a,b){return b.querySelectorAll(a)},by=document.documentElement,bz=by.matchesSelector||by.webkitMatchesSelector||by.mozMatchesSelector||by.msMatchesSelector||by.oMatchesSelector,bA=function(a,b){return bz.call(a,b)};typeof Sizzle=="function"&&(bw=function(a,b){return Sizzle(a,b)[0]},bx=function(a,b){return Sizzle.uniqueSort(Sizzle(a,b))},bA=Sizzle.matchesSelector);var bB=[];d3.selection=function(){return bJ},d3.selection.prototype=bB,bB.select=function(a){var b=[],c,d,e,f;typeof a!="function"&&(a=bC(a));for(var g=-1,h=this.length;++g1){while(++e=0;)if(f=c[d])e&&e!==f.nextSibling&&e.parentNode.insertBefore(f,e),e=f;return this},bB.sort=function(a){a=bI.apply(this,arguments);for(var b=-1,c=this.length;++b0&&(a=a.substring(0,e)),arguments.length<2?(e=this.node()[d])&&e._:this.each(function(e,f){function i(a){var c=d3.event;d3.event=a;try{b.call(g,g.__data__,f)}finally{d3.event=c}}var g=this,h=g[d];h&&(g.removeEventListener(a,h,h.$),delete g[d]),b&&(g.addEventListener(a,g[d]=i,i.$=c),i._=b)})},bB.each=function(a){for(var b=-1,c=this.length;++b=cI?e?"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"M0,"+e+"A"+e+","+e+" 0 1,0 0,"+ -e+"A"+e+","+e+" 0 1,0 0,"+e+"Z":"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"Z":e?"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L"+e*m+","+e*n+"A"+e+","+e+" 0 "+j+",0 "+e*k+","+e*l+"Z":"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L0,0"+"Z"}var a=cJ,b=cK,c=cL,d=cM;return e.innerRadius=function(b){return arguments.length?(a=d3.functor(b),e):a},e.outerRadius=function(a){return arguments.length?(b=d3.functor(a),e):b},e.startAngle=function(a){return arguments.length?(c=d3.functor(a),e):c},e.endAngle=function(a){return arguments.length?(d=d3.functor(a),e):d},e.centroid=function(){var e=(a.apply(this,arguments)+b.apply(this,arguments))/2,f=(c.apply(this,arguments)+d.apply(this +,arguments))/2+cH;return[Math.cos(f)*e,Math.sin(f)*e]},e};var cH=-Math.PI/2,cI=2*Math.PI-1e-6;d3.svg.line=function(){return cN(Object)};var cR="linear",cS=d3.map({linear:cT,"step-before":cU,"step-after":cV,basis:c_,"basis-open":da,"basis-closed":db,bundle:dc,cardinal:cY,"cardinal-open":cW,"cardinal-closed":cX,monotone:dl}),de=[0,2/3,1/3,0],df=[0,1/3,2/3,0],dg=[0,1/6,2/3,1/6];d3.svg.line.radial=function(){var a=cN(dm);return a.radius=a.x,delete a.x,a.angle=a.y,delete a.y,a},cU.reverse=cV,cV.reverse=cU,d3.svg.area=function(){return dn(Object)},d3.svg.area.radial=function(){var a=dn(dm);return a.radius=a.x,delete a.x,a.innerRadius=a.x0,delete a.x0,a.outerRadius=a.x1,delete a.x1,a.angle=a.y,delete a.y,a.startAngle=a.y0,delete a.y0,a.endAngle=a.y1,delete a.y1,a},d3.svg.chord=function(){function f(c,d){var e=g(this,a,c,d),f=g(this,b,c,d);return"M"+e.p0+i(e.r,e.p1,e.a1-e.a0)+(h(e,f)?j(e.r,e.p1,e.r,e.p0):j(e.r,e.p1,f.r,f.p0)+i(f.r,f.p1,f.a1-f.a0)+j(f.r,f.p1,e.r,e.p0))+"Z"}function g(a,b,f,g){var h=b.call(a,f,g),i=c.call(a,h,g),j=d.call(a,h,g)+cH,k=e.call(a,h,g)+cH;return{r:i,a0:j,a1:k,p0:[i*Math.cos(j),i*Math.sin(j)],p1:[i*Math.cos(k),i*Math.sin(k)]}}function h(a,b){return a.a0==b.a0&&a.a1==b.a1}function i(a,b,c){return"A"+a+","+a+" 0 "+ +(c>Math.PI)+",1 "+b}function j(a,b,c,d){return"Q 0,0 "+d}var a=dr,b=ds,c=dt,d=cL,e=cM;return f.radius=function(a){return arguments.length?(c=d3.functor(a),f):c},f.source=function(b){return arguments.length?(a=d3.functor(b),f):a},f.target=function(a){return arguments.length?(b=d3.functor(a),f):b},f.startAngle=function(a){return arguments.length?(d=d3.functor(a),f):d},f.endAngle=function(a){return arguments.length?(e=d3.functor(a),f):e},f},d3.svg.diagonal=function(){function d(d,e){var f=a.call(this,d,e),g=b.call(this,d,e),h=(f.y+g.y)/2,i=[f,{x:f.x,y:h},{x:g.x,y:h},g];return i=i.map(c),"M"+i[0]+"C"+i[1]+" "+i[2]+" "+i[3]}var a=dr,b=ds,c=dw;return d.source=function(b){return arguments.length?(a=d3.functor(b),d):a},d.target=function(a){return arguments.length?(b=d3.functor(a),d):b},d.projection=function(a){return arguments.length?(c=a,d):c},d},d3.svg.diagonal.radial=function(){var a=d3.svg.diagonal(),b=dw,c=a.projection;return a.projection=function(a){return arguments.length?c(dx(b=a)):b},a},d3.svg.mouse=d3.mouse,d3.svg.touches=d3.touches,d3.svg.symbol=function(){function c(c,d){return(dB.get(a.call(this,c,d))||dA)(b.call(this,c,d))}var a=dz,b=dy;return c.type=function(b){return arguments.length?(a=d3.functor(b),c):a},c.size=function(a){return arguments.length?(b=d3.functor(a),c):b},c};var dB=d3.map({circle:dA,cross:function(a){var b=Math.sqrt(a/5)/2;return"M"+ -3*b+","+ -b+"H"+ -b+"V"+ -3*b+"H"+b+"V"+ -b+"H"+3*b+"V"+b+"H"+b+"V"+3*b+"H"+ -b+"V"+b+"H"+ -3*b+"Z"},diamond:function(a){var b=Math.sqrt(a/(2*dD)),c=b*dD;return"M0,"+ -b+"L"+c+",0"+" 0,"+b+" "+ -c+",0"+"Z"},square:function(a){var b=Math.sqrt(a)/2;return"M"+ -b+","+ -b+"L"+b+","+ -b+" "+b+","+b+" "+ -b+","+b+"Z"},"triangle-down":function(a){var b=Math.sqrt(a/dC),c=b*dC/2;return"M0,"+c+"L"+b+","+ -c+" "+ -b+","+ -c+"Z"},"triangle-up":function(a){var b=Math.sqrt(a/dC),c=b*dC/2;return"M0,"+ -c+"L"+b+","+c+" "+ -b+","+c+"Z"}});d3.svg.symbolTypes=dB.keys();var dC=Math.sqrt(3),dD=Math.tan(30*Math.PI/180);d3.svg.axis=function(){function k(k){k.each(function(l,m,n){var o=d3.select(this),p=k.delay?function(a){var b=bS;try{return bS=k.id,a.transition().delay(k[n][m].delay).duration(k[n][m].duration).ease(k.ease())}finally{bS=b}}:Object,q=h==null?a.ticks?a.ticks.apply(a,g):a.domain():h,r=i==null?a.tickFormat?a.tickFormat.apply(a,g):String:i,s=dG(a,q,j),t=o.selectAll(".minor").data(s,String),u=t.enter().insert("line","g").attr("class","tick minor").style("opacity",1e-6),v=p(t.exit()).style("opacity",1e-6).remove(),w=p(t).style("opacity",1),x=o.selectAll("g").data(q,String),y=x.enter().insert("g","path").style("opacity",1e-6),z=p(x.exit()).style("opacity",1e-6).remove(),A=p(x).style("opacity",1),B,C=ci(a),D=o.selectAll(".domain").data([0]),E=D.enter().append("path").attr("class","domain"),F=p(D),G=a.copy(),H=this.__chart__||G;this.__chart__=G,y.append("line").attr("class","tick"),y.append("text"),A.select("text").text(r);switch(b){case"bottom":B=dE,u.attr("y2",d),w.attr("x2",0).attr("y2",d),y.select("line").attr("y2",c),y.select("text").attr("y",Math.max(c,0)+f),A.select("line").attr("x2",0).attr("y2",c),A.select("text").attr("x",0).attr("y",Math.max(c,0)+f).attr("dy",".71em").attr("text-anchor","middle"),F.attr("d","M"+C[0]+","+e+"V0H"+C[1]+"V"+e);break;case"top":B=dE,u.attr("y2",-d),w.attr("x2",0).attr("y2",-d),y.select("line").attr("y2",-c),y.select("text").attr("y",-(Math.max(c,0)+f)),A.select("line").attr("x2",0).attr("y2",-c),A.select("text").attr("x",0).attr("y",-(Math.max(c,0)+f)).attr("dy","0em").attr("text-anchor","middle"),F.attr("d","M"+C[0]+","+ -e+"V0H"+C[1]+"V"+ -e);break;case"left":B=dF,u.attr("x2",-d),w.attr("x2",-d).attr("y2",0),y.select("line").attr("x2",-c),y.select("text").attr("x",-(Math.max(c,0)+f)),A.select("line").attr("x2",-c).attr("y2",0),A.select("text").attr("x",-(Math.max(c,0)+f)).attr("y",0).attr("dy",".32em").attr("text-anchor","end"),F.attr("d","M"+ -e+","+C[0]+"H0V"+C[1]+"H"+ -e);break;case"right":B=dF,u.attr("x2",d),w.attr("x2",d).attr("y2",0),y.select("line").attr("x2",c),y.select("text").attr("x",Math.max(c,0)+f),A.select("line").attr("x2",c).attr("y2",0),A.select("text").attr("x",Math.max(c,0)+f).attr("y",0).attr("dy",".32em").attr("text-anchor","start"),F.attr("d","M"+e+","+C[0]+"H0V"+C[1]+"H"+e)}if(a.ticks)y.call(B,H),A.call(B,G),z.call(B,G),u.call(B,H),w.call(B,G),v.call(B,G);else{var I=G.rangeBand()/2,J=function(a){return G(a)+I};y.call(B,J),A.call(B,J)}})}var a=d3.scale.linear(),b="bottom",c=6,d=6,e=6,f=3,g=[10],h=null,i,j=0;return k.scale=function(b){return arguments.length?(a=b,k):a},k.orient=function(a){return arguments.length?(b=a,k):b},k.ticks=function(){return arguments.length?(g=arguments,k):g},k.tickValues=function(a){return arguments.length?(h=a,k):h},k.tickFormat=function(a){return arguments.length?(i=a,k):i},k.tickSize=function(a,b,f){if(!arguments.length)return c;var g=arguments.length-1;return c=+a,d=g>1?+b:c,e=g>0?+arguments[g]:c,k},k.tickPadding=function(a){return arguments.length?(f=+a,k):f},k.tickSubdivide=function(a){return arguments.length?(j=+a,k):j},k},d3.svg.brush=function(){function f(a){a.each(function(){var a=d3.select(this),e=a.selectAll(".background").data([0]),k=a.selectAll(".extent").data([0]),l=a.selectAll(".resize").data(d,String),m;a.style("pointer-events","all").on("mousedown.brush",j).on("touchstart.brush",j),e.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),k.enter().append("rect").attr("class","extent").style("cursor","move"),l.enter().append("g").attr("class",function(a){return"resize "+a}).style("cursor",function(a){return dH[a]}).append("rect").attr("x",function(a){return/[ew]$/.test(a)?-3:null}).attr("y",function(a){return/^[ns]/.test(a)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),l.style("display",f.empty()?"none":null),l.exit().remove(),b&&(m=ci(b),e.attr("x",m[0]).attr("width",m[1]-m[0]),h(a)),c&&(m=ci(c),e.attr("y",m[0]).attr("height",m[1]-m[0]),i(a)),g(a)})}function g(a){a.selectAll(".resize").attr("transform",function(a){return"translate("+e[+/e$/.test(a)][0]+","+e[+/^s/.test(a)][1]+")"})}function h(a){a.select(".extent").attr("x",e[0][0]),a.selectAll(".extent,.n>rect,.s>rect").attr("width",e[1][0]-e[0][0])}function i(a){a.select(".extent").attr("y",e[0][1]),a.selectAll(".extent,.e>rect,.w>rect").attr("height",e[1][1]-e[0][1])}function j(){function w(){var a=d3.event.changedTouches;return a?d3.touches(d,a)[0]:d3.mouse(d)}function x(){d3.event.keyCode==32&&(p||(q=null,r[0]-=e[1][0],r[1]-=e[1][1],p=2),X())}function y(){d3.event.keyCode==32&&p==2&&(r[0]+=e[1][0],r[1]+=e[1][1],p=0,X())}function z(){var a=w(),d=!1;s&&(a[0]+=s[0],a[1]+=s[1]),p||(d3.event.altKey?(q||(q=[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]),r[0]=e[+(a[0]0?e=c:e=0:c>0&&(b.start({type:"start",alpha:e=c}),d3.timer(a.tick)),a):e},a.start=function(){function s(a,c){var d=t(b),e=-1,f=d.length,g;while(++ee&&(e=h),d.push(h)}for(g=0;g=i[0]&&o<=i[1]&&(k=g[d3.bisect(j,o,1,m)-1],k.y+=n,k.push(e[f]));return g}var a=!0,b=Number,c=ej,d=eh;return e.value=function(a){return arguments.length?(b=a,e):b},e.range=function(a){return arguments.length?(c=d3.functor(a),e):c},e.bins=function(a){return arguments.length?(d=typeof a=="number"?function(b){return ei(b,a)}:d3.functor(a),e):d},e.frequency=function(b){return arguments.length?(a=!!b,e):a},e},d3.layout.hierarchy=function(){function e(f,h,i){var j=b.call(g,f,h),k=ep?f:{data:f};k.depth=h,i.push(k);if(j&&(m=j.length)){var l=-1,m,n=k.children=[],o=0,p=h+1;while(++l0&&(eN(eO(g,a,d),a,m),i+=m,j+=m),k+=g._tree.mod,i+=e._tree.mod,l+=h._tree.mod,j+=f._tree.mod;g&&!eG(f)&&(f._tree.thread=g,f._tree.mod+=k-j),e&&!eF(h)&&(h._tree.thread=e,h._tree.mod+=i-l,d=a)}return d}var f=a.call(this,d,e),g=f[0];eL(g,function(a,b){a._tree={ancestor:a,prelim:0,mod:0,change:0,shift:0,number:b?b._tree.number+1:0}}),h(g),i(g,-g._tree.prelim);var k=eH(g,eJ),l=eH(g,eI),m=eH(g,eK),n=k.x-b(k,l)/2,o=l.x+b(l,k)/2,p=m.depth||1;return eL(g,function(a){a.x=(a.x-n)/(o-n)*c[0],a.y=a.depth/p*c[1],delete a._tree}),f}var a=d3.layout.hierarchy().sort(null).value(null),b=eE,c=[1,1];return d.separation=function(a){return arguments.length?(b=a,d):b},d.size=function(a){return arguments.length?(c=a,d):c},ek(d,a)},d3.layout.treemap=function(){function i(a,b){var c=-1,d=a.length,e,f;while(++c0)d.push(g=f[o-1]),d.area+=g.area,(k=l(d,n))<=h?(f.pop(),h=k):(d.area-=d.pop().area,m(d,n,c,!1),n=Math.min(c.dx,c.dy),d.length=d.area=0,h=Infinity);d.length&&(m(d,n,c,!0),d.length=d.area=0),b.forEach(j)}}function k(a){var b=a.children;if(b&&b.length){var c=e(a),d=b.slice(),f,g=[];i(d,c.dx*c.dy/a.value),g.area=0;while(f=d.pop())g.push(f),g.area+=f.area,f.z!=null&&(m(g,f.z?c.dx:c.dy,c,!d.length),g.length=g.area=0);b.forEach(k)}}function l(a,b){var c=a.area,d,e=0,f=Infinity,g=-1,i=a.length;while(++ge&&(e=d)}return c*=c,b*=b,c?Math.max(b*e*h/c,c/(b*f*h)):Infinity}function m(a,c,d,e){var f=-1,g=a.length,h=d.x,i=d.y,j=c?b(a.area/c):0,k;if(c==d.dx){if(e||j>d.dy)j=d.dy;while(++fd.dx)j=d.dx;while(++f=a.length)return d;if(i)return i=!1,c;var b=f.lastIndex;if(a.charCodeAt(b)===34){var e=b;while(e++50?b:f<-140?c:g<21?d:a)(e)}var a=d3.geo.albers(),b=d3.geo.albers().origin([-160,60]).parallels([55,65]),c=d3.geo.albers().origin([-160,20]).parallels([8,18]),d=d3.geo.albers().origin([-60,10]).parallels([8,18]);return e.scale=function(f){return arguments.length?(a.scale(f),b.scale(f*.6),c.scale(f),d.scale(f*1.5),e.translate(a.translate())):a.scale()},e.translate=function(f){if(!arguments.length)return a.translate();var g=a.scale()/1e3,h=f[0],i=f[1];return a.translate(f),b.translate([h-400*g,i+170*g]),c.translate([h-190*g,i+200*g]),d.translate([h+580*g,i+430*g]),e},e.scale(a.scale())},d3.geo.bonne=function(){function g(g){var h=g[0]*eT-c,i=g[1]*eT-d;if(e){var j=f+e-i,k=h*Math.cos(i)/j;h=j*Math.sin(k),i=j*Math.cos(k)-f}else h*=Math.cos(i),i*=-1;return[a*h+b[0],a*i+b[1]]}var a=200,b=[480,250],c,d,e,f;return g.invert=function(d){var g=(d[0]-b[0])/a,h=(d[1]-b[1])/a;if(e){var i=f+h,j=Math.sqrt(g*g+i*i);h=f+e-j,g=c+j*Math.atan2(g,i)/Math.cos(h)}else h*=-1,g/=Math.cos(h);return[g/eT,h/eT]},g.parallel=function(a){return arguments.length?(f=1/Math.tan(e=a*eT),g):e/eT},g.origin=function(a){return arguments.length?(c=a[0]*eT,d=a[1]*eT,g):[c/eT,d/eT]},g.scale=function(b){return arguments.length?(a=+b,g):a},g.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],g):b},g.origin([0,0]).parallel(45)},d3.geo.equirectangular=function(){function c(c){var d=c[0]/360,e=-c[1]/360;return[a*d+b[0],a*e+b[1]]}var a=500,b=[480,250];return c.invert=function(c){var d=(c[0]-b[0])/a,e=(c[1]-b[1])/a;return[360*d,-360*e]},c.scale=function(b){return arguments.length?(a=+b,c):a},c.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],c):b},c},d3.geo.mercator=function(){function c(c){var d=c[0]/360,e=-(Math.log(Math.tan(Math.PI/4+c[1]*eT/2))/eT)/360;return[a*d+b[0],a*Math.max(-0.5,Math.min(.5,e))+b[1]]}var a=500,b=[480,250];return c.invert=function(c){var d=(c[0]-b[0])/a,e=(c[1]-b[1])/a;return[360*d,2*Math.atan(Math.exp(-360*e*eT))/eT-90]},c.scale=function(b){return arguments.length?(a=+b,c):a},c.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],c):b},c},d3.geo.path=function(){function d(c,d){return typeof a=="function"&&(b=eV(a.apply(this,arguments))),f(c)||null}function e(a){return c(a).join(",")}function h(a){var b=k(a[0]),c=0,d=a.length;while(++c0){b.push("M");while(++h0){b.push("M");while(++kd&&(d=a),fe&&(e=f)}),[[b,c],[d,e]]};var eX={Feature:eY,FeatureCollection:eZ,GeometryCollection:e$,LineString:e_,MultiLineString:fa,MultiPoint:e_,MultiPolygon:fb,Point:fc,Polygon:fd};d3.geo.circle=function(){function e(){}function f(a){return d.distance(a)=k*k+l*l?d[f].index=-1:(d[m].index=-1,o=d[f].angle,m=f,n=g)):(o=d[f].angle,m=f,n=g);e.push(h);for(f=0,g=0;f<2;++g)d[g].index!==-1&&(e.push(d[g].index),f++);p=e.length;for(;g=0?(c=a.ep.r,d=a.ep.l):(c=a.ep.l,d=a.ep.r),a.a===1?(g=c?c.y:-1e6,e=a.c-a.b*g,h=d?d.y:1e6,f=a.c-a.b*h):(e=c?c.x:-1e6,g=a.c-a.a*e,f=d?d.x:1e6,h=a.c-a.a*f);var i=[e,g],j=[f,h];b[a.region.l.index].push(i,j),b[a.region.r.index].push(i,j)}),b.map(function(b,c){var d=a[c][0],e=a[c][1];return b.forEach(function(a){a.angle=Math.atan2(a[0]-d,a[1]-e)}),b.sort(function(a,b){return a.angle-b.angle}).filter(function(a,c){return!c||a.angle-b[c-1].angle>1e-10})})};var fn={l:"r",r:"l"};d3.geom.delaunay=function(a){var b=a.map(function(){return[]}),c=[];return fo(a,function(c){b[c.region.l.index].push(a[c.region.r.index])}),b.forEach(function(b,d){var e=a[d],f=e[0],g=e[1];b.forEach(function(a){a.angle=Math.atan2(a[0]-f,a[1]-g)}),b.sort(function(a,b){return a.angle-b.angle});for(var h=0,i=b.length-1;h=g,j=b.y>=h,l=(j<<1)+i;a.leaf=!1,a=a.nodes[l]||(a.nodes[l]=fp()),i?c=g:e=g,j?d=h:f=h,k(a,b,c,d,e,f)}var f,g=-1,h=a.length;h&&isNaN(a[0].x)&&(a=a.map(fr));if(arguments.length<5)if(arguments.length===3)e=d=c,c=b;else{b=c=Infinity,d=e=-Infinity;while(++gd&&(d=f.x),f.y>e&&(e=f.y);var i=d-b,j=e-c;i>j?e=c+i:d=b+j}var m=fp();return m.add=function(a){k(m,a,b,c,d,e)},m.visit=function(a){fq(a,m,b,c,d,e)},a.forEach(m.add),m},d3.time={};var fs=Date;ft.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(a){this._.setUTCDate(a)},setDay:function(a){this._.setUTCDay(a)},setFullYear:function(a){this._.setUTCFullYear(a)},setHours:function(a){this._.setUTCHours(a)},setMilliseconds:function(a){this._.setUTCMilliseconds(a)},setMinutes:function(a){this._.setUTCMinutes(a)},setMonth:function(a){this._.setUTCMonth(a)},setSeconds:function(a){this._.setUTCSeconds(a)},setTime:function(a){this._.setTime(a)}},d3.time.format=function(a){function c(c){var d=[],e=-1,f=0,g,h;while(++e=12?"PM":"AM"},S:function(a){return fv(a.getSeconds())},U:function(a){return fv(d3.time.sundayOfYear(a))},w:function(a){return a.getDay()},W:function(a){return fv(d3.time.mondayOfYear(a))},x:d3.time.format("%m/%d/%y"),X:d3.time.format("%H:%M:%S"),y:function(a){return fv(a.getFullYear()%100)},Y:function(a){return fx(a.getFullYear()%1e4)},Z:f_,"%":function(a){return"%"}},fA={a:fB,A:fC,b:fF,B:fH,c:fL,d:fS,e:fS,H:fT,I:fU,L:fX,m:fR,M:fV,p:fZ,S:fW,x:fM,X:fN,y:fP,Y:fO},fD=/^(?:sun|mon|tue|wed|thu|fri|sat)/i,fE=/^(?:Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)/i;d3_time_weekdays=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var fG=d3.map({jan:0,feb:1,mar:2,apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11}),fI=/^(?:January|February|March|April|May|June|July|August|September|October|November|December)/ig,fJ=d3.map({january:0,february:1,march:2,april:3,may:4,june:5,july:6,august:7,september:8,october:9,november:10,december:11}),fK=["January","February","March","April","May","June","July","August","September","October","November","December"],fY=/\s*\d+/,f$=d3.map({am:0,pm:1});d3.time.format.utc=function(a){function c(a){try{fs=ft;var c=new fs;return c._=a,b(c)}finally{fs=Date}}var b=d3.time.format(a);return c.parse=function(a){try{fs=ft;var c=b.parse(a);return c&&c._}finally{fs=Date}},c.toString=b.toString,c};var ga=d3.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ");d3.time.format.iso=Date.prototype.toISOString?gb:ga,gb.parse=function(a){return new Date(a)},gb.toString=ga.toString,d3.time.second=gc(function(a){return new fs(Math.floor(a/1e3)*1e3)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*1e3)},function(a){return a.getSeconds()}),d3.time.seconds=d3.time.second.range,d3.time.seconds.utc=d3.time.second.utc.range,d3.time.minute=gc(function(a){return new fs(Math.floor(a/6e4)*6e4)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*6e4)},function(a){return a.getMinutes()}),d3.time.minutes=d3.time.minute.range,d3.time.minutes.utc=d3.time.minute.utc.range,d3.time.hour=gc(function(a){var b=a.getTimezoneOffset()/60;return new fs((Math.floor(a/36e5-b)+b)*36e5)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*36e5)},function(a){return a.getHours()}),d3.time.hours=d3.time.hour.range,d3.time.hours.utc=d3.time.hour.utc.range,d3.time.day=gc(function(a){return new fs(a.getFullYear(),a.getMonth(),a.getDate())},function(a,b){a.setDate(a.getDate()+b)},function(a){return a.getDate()-1}),d3.time.days=d3.time.day.range,d3.time.days.utc=d3.time.day.utc.range,d3.time.dayOfYear=function(a){var b=d3.time.year(a);return Math.floor((a-b)/864e5-(a.getTimezoneOffset()-b.getTimezoneOffset())/1440)},d3_time_weekdays.forEach(function(a,b){a=a.toLowerCase(),b=7-b;var c=d3.time[a]=gc(function(a){return(a=d3.time.day(a)).setDate(a.getDate()-(a.getDay()+b)%7),a},function(a,b){a.setDate(a.getDate()+Math.floor(b)*7)},function(a){var c=d3.time.year(a).getDay();return Math.floor((d3.time.dayOfYear(a)+(c+b)%7)/7)-(c!==b)});d3.time[a+"s"]=c.range,d3.time[a+"s"].utc=c.utc.range,d3.time[a+"OfYear"]=function(a){var c=d3.time.year(a).getDay();return Math.floor((d3.time.dayOfYear(a)+(c+b)%7)/7)}}),d3.time.week=d3.time.sunday,d3.time.weeks=d3.time.sunday.range,d3.time.weeks.utc=d3.time.sunday.utc.range,d3.time.weekOfYear=d3.time.sundayOfYear,d3.time.month=gc(function(a){return new fs(a.getFullYear(),a.getMonth(),1)},function(a,b){a.setMonth(a.getMonth()+b)},function(a){return a.getMonth()}),d3.time.months=d3.time.month.range,d3.time.months.utc=d3.time.month.utc.range,d3.time.year=gc(function(a){return new fs(a.getFullYear(),0,1)},function(a,b){a.setFullYear(a.getFullYear()+b)},function(a){return a.getFullYear()}),d3.time.years=d3.time.year.range,d3.time.years.utc=d3.time.year.utc.range;var gk=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],gl=[[d3.time.second,1],[d3.time.second,5],[d3.time.second,15],[d3.time.second,30],[d3.time.minute,1],[d3.time.minute,5],[d3.time.minute,15],[d3.time.minute,30],[d3.time.hour,1],[d3.time.hour,3],[d3.time.hour,6],[d3.time.hour,12],[d3.time.day,1],[d3.time.day,2],[d3.time.week,1],[d3.time.month,1],[d3.time.month,3],[d3.time.year,1]],gm=[[d3.time.format("%Y"),function(a){return!0}],[d3.time.format("%B"),function(a){return a.getMonth()}],[d3.time.format("%b %d"),function(a){return a.getDate()!=1}],[d3.time.format("%a %d"),function(a){return a.getDay()&&a.getDate()!=1}],[d3.time.format("%I %p"),function(a){return a.getHours()}],[d3.time.format("%I:%M"),function(a){return a.getMinutes()}],[d3.time.format(":%S"),function(a){return a.getSeconds()}],[d3.time.format(".%L"),function(a){return a.getMilliseconds()}]],gn=d3.scale.linear(),go=gh(gm);gl.year=function(a,b){return gn.domain(a.map(gj)).ticks(b).map(gi)},d3.time.scale=function(){return ge(d3.scale.linear(),gl,go)};var gp=gl.map(function(a){return[a[0].utc,a[1]]}),gq=[[d3.time.format.utc("%Y"),function(a){return!0}],[d3.time.format.utc("%B"),function(a){return a.getUTCMonth()}],[d3.time.format.utc("%b %d"),function(a){return a.getUTCDate()!=1}],[d3.time.format.utc("%a %d"),function(a){return a.getUTCDay()&&a.getUTCDate()!=1}],[d3.time.format.utc("%I %p"),function(a){return a.getUTCHours()}],[d3.time.format.utc("%I:%M"),function(a){return a.getUTCMinutes()}],[d3.time.format.utc(":%S"),function(a){return a.getUTCSeconds()}],[d3.time.format.utc(".%L"),function(a){return a.getUTCMilliseconds()}]],gr=gh(gq);gp.year=function(a,b){return gn.domain(a.map(gt)).ticks(b).map(gs)},d3.time.scale.utc=function(){return ge(d3.scale.linear(),gp,gr)}})(); \ No newline at end of file diff --git a/src/core/cielab.js b/src/core/cielab.js index 9456e8864138f..adef5618fa759 100644 --- a/src/core/cielab.js +++ b/src/core/cielab.js @@ -32,6 +32,30 @@ d3_Cielab.prototype.darker = function(k) { return d3_cielab(Math.max(0, this.l - 18 * (arguments.length ? k : 1)), this.a, this.b); }; +d3_Cielab.prototype.hue = function(h) { + var a = this.a; + var b = this.b; + + if (arguments.length) { + return d3_cielab_lch(this.l, this.chroma(), h) + } + + var h = Math.atan2(b, a); + + return h > 0 ? (h / Math.PI) * 180 : 360 - (Math.abs(h) / Math.PI) * 180; +} + +d3_Cielab.prototype.chroma = function(c) { + var a = this.a; + var b = this.b; + + if (arguments.length) { + return d3_cielab_lch(this.l, c, this.hue()) + } + + return Math.sqrt(a * a + b * b); +} + d3_Cielab.prototype.toString = function() { return this.rgb().toString(); }; @@ -72,3 +96,10 @@ function d3_cielab_cielch(l, a, b) { return d3_cielch(l, c, h); } +function d3_cielab_lch(l, c, h) { + var hr = h * (Math.PI / 180); + var a = Math.cos(hr) * c; + var b = Math.sin(hr) * c; + return d3_cielab(l, a, b); +} + diff --git a/test/core/cielab-test.js b/test/core/cielab-test.js index 85c7528f24c90..a61a855826025 100644 --- a/test/core/cielab-test.js +++ b/test/core/cielab-test.js @@ -38,6 +38,18 @@ suite.addBatch({ assert.equal(brown.darker().l, brown.l - 18); assert.equal(brown.darker(2).l, brown.l - 36); }, + "can get chroma value": function(lab) { + assert.equal(lab("#048F07").chroma(), 76.67961238453204); + }, + "can get hue value": function(lab) { + assert.equal(lab("#048F07").hue(), 136.39481492184387); + }, + "can set chroma value": function(lab) { + assert.equal(lab("red").chroma(14).chroma(), 14); + }, + "can set hue value": function(lab) { + assert.equal(lab("red").hue(14).hue(), 14); + }, "string coercion returns hexadecimal format": function(lab) { assert.strictEqual(lab("#abcdef") + "", "#abcdef"); assert.strictEqual(lab("moccasin") + "", "#ffe4b5");